세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책들의 원래 위치가 주어질 때, 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 계산하는 프로그램을 작성하시오. 세준이는 한 걸음에 좌표 1칸씩 가며, 책의 원래 위치는 정수 좌표이다. 책을 모두 제자리에 놔둔 후에는 다시 0으로 돌아올 필요는 없다. 그리고 세준이는 한 번에 최대 M권의 책을 들 수 있다.
# 1461
import sys
input = lambda: sys.stdin.readline().strip()
# 책의 위치가 양수와 음수 구분
# m개씩 해서 거리 구하기 (최대부터 계산)
n, m = map(int, input().split())
book = list(map(int, input().split()))
book_p, book_m = [], []
book.sort()
for b in book:
if b > 0:
book_p.append(b)
else:
book_m.append(b)
book_m = book_m[::-1]
def count_book(output, array, m):
while len(array) > 0:
dist_now = []
for _ in range(m):
if len(array) == 0:
break
dist_now.append(abs(array.pop()))
output.append(max(dist_now))
dist = []
count_book(dist, book_p, m)
count_book(dist, book_m, m)
dist.sort(reverse = True)
for i in range(1, len(dist)):
dist[i] *= 2
print(sum(dist))