const rl = require("readline").createInterface({ input: process.stdin });
const iter = rl[Symbol.asyncIterator]();
const readline = async (): Promise<string> => (await iter.next()).value;
interface v_i {
v: number;
i: number;
}
(async function (): Promise<number> {
const [n, k] = (await readline()).split(" ").map(Number);
const _map: Array<v_i> = (await readline())
.split(" ")
.map((v, i) => ({ v: Number(v), i: Math.floor(i / k) }));
let res = 0;
let used_tools_map: Array<boolean> = [true];
let flag = 0;
_map.sort((a, b) => a.v - b.v);
for (let i = n - 1; i >= 0; i--) {
let temp: number = _map[i].i;
while (temp > flag && used_tools_map[temp]) {
temp--;
}
if (!used_tools_map[temp]) {
used_tools_map[temp] = true;
} else {
res += _map[i].v;
flag = Math.max(flag, _map[i].i);
}
}
return res;
})()
.then((res) => console.log(res))
.catch((err) => console.log(err))
.finally(() => rl.close());