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());