import sys
import heapq#最小堆,存入相反数当最大堆,这样不用每次都排序
n,k=map(int,sys.stdin.readline().split())
a=list(map(int,sys.stdin.readline().split()))
total_time=sum(a)
save_time=0
heap=[]
#从后向前遍历
for i in range(n-1,-1,-1):
    #每隔k轮有一个道具,找到此时最大堆中的堆顶,用总共时间减去堆顶,即为节省的时间
    if (i+1)%k==0 and heap:
        save_time+=heapq.heappop(heap)#存负数
        
    #其他情况,将当前节点放入堆中
    heapq.heappush(heap,-a[i])

print(total_time+save_time)