E. Полицейский патруль
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Представьте, что ваш город — бесконечная двухмерная плоскость, с введенной на ней Декартовой системой координат. Единственная дорога, подверженная преступлениям, это ось Ox. На данный момент вдоль этой дороги стоят n преступников. Ни один полицейский участок еще не построен на дороге, поэтому мэр как можно скорее хочет построить участок и избавиться от преступников.

Управлять новым участком доверили вам, поэтому вам и выбирать, где он будет находиться. Вы должны так выбрать целочисленную точку для полицейского участка, чтобы операция по поимке всех преступников на оси Ox заняла как можно меньше времени. Поимка преступников оси Ox будет осуществляться только из нового участка.

В новом участке будет только одна патрульная машина. На этой машине можно подъезжать к преступникам, арестовывать их, затем сажать их в машину, везти в участок и сажать в тюрьму. В патрульную машину одновременно помещается не больше m преступников. Обратите внимание, что преступники не знают о вашей операции. Поэтому они будут стоять на месте, а не будут убегать.

Ваша задача — найти такое место для полицейского участка, что минимальное расстояние, которое придется в сумме проехать, чтобы посадить в тюрьму всех преступников, будет как можно меньше. Обратите внимание, что вы можете построить полицейский участок в точке, где находится один или несколько преступников, в таком случае все эти преступники сразу же будут аррестованы.

Входные данные

В первой строке записано два целых числа — n (1 ≤ n ≤ 106) и m (1 ≤ m ≤ 106), разделенные пробелом. В следующей строке записано n целых чисел через пробел. При этом i-е число обозначает позицию i-го преступника на оси Ox. Абсолютное значение этого числа не превосходит 109 для каждого преступника. Если преступник находится в позиции x, это обозначает, что он стоит в точке плоскости (x, 0).

Позиции преступников даны в неубывающем порядке. Обратите внимание, что в некоторой точке плоскости может стоять больше одного преступника.

Обратите внимание: входные/выходные данные имеют очень большой размер, поэтому не стоит использовать медленные способы ввода/вывода данных вашего языка программирования. Например, в языке C++ не стоит использовать потоки ввода/вывода (cin, cout).

Выходные данные

Выведите единственное целое число, обозначающее минимальное расстояние, которое требуется проехать, чтобы посадить в тюрьму всех преступников, при оптимальном выборе точки для полицейского участка.

Примеры
Входные данные
3 6
1 2 3
Выходные данные
4
Входные данные
5 5
-7 -6 -3 -1 1
Выходные данные
16
Входные данные
1 369
0
Выходные данные
0
Входные данные
11 2
-375 -108 1336 1453 1598 1892 2804 3732 4291 4588 4822
Выходные данные
18716