#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
void ridica(int nod,int H[],int poz[])
{
if (nod>1 && H[nod]<=H[nod/2]) {
swap(poz[nod],poz[nod/2]);
swap(H[nod],H[nod/2]);
ridica(nod/2,H,poz);
}
}
void adauga(int nod,int &n,int H[],int poz[])
{
n+=1;
H[n]=nod;
poz[n]=n;
ridica(n,H,poz);
}
void coboara(int nod,int n,int H[],int poz[])
{
int fiu;
if (fiu!=0) {
fiu=0;
if (nod*2<=n ){
fiu=nod*2;
if (nod*2<n && H[nod *2+1]<H[nod*2]) fiu=nod*2+1;
if (H[fiu]>=H[nod]) fiu=0;}
if (fiu!=0) {
swap(poz[nod],poz[fiu]);
swap(H[nod],H[fiu]);
coboara(fiu,n,H,poz);
}
}
}
void sterge(int nod, int &n,int H[],int poz[])
{
swap(poz[1],poz[n]);
swap(H[1],H[n]);
n-=1;
coboara(1,n,H,poz);
}
void verifica(int nod,int n,int H[],int poz[],int left)
{
if (poz[nod]<left) {
sterge(1,n,H,poz);
verifica(1,n,H,poz,left);
}
}
int n,k,aux,t,H[5000005],poz[5000005];
int main()
{
int left=0,suma=0;
cin>>t>>k;
for (int i=1;i<=t;i++){
cin>>aux;
adauga(aux,n,H,poz);
if (i>=k)
if (i<=t) {
verifica(1,n,H,poz,left+1);
left=i-k+1;
suma+=H[1];
}
}
cout<<suma;
return 0;
}