#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
struct nod{
int inf,poz;
nod *urm,*prec;
};
void adaug_sf(nod *&inc,nod *&sf,int v,int i){
nod *d=new nod, *s2,*q;
d->inf=v;
d->poz=i;
d->urm=0;
for(s2=sf; s2 && s2->inf>=v;){
q=s2;
s2=s2->prec;
delete q;
}
if(!s2){
d->prec=0;
inc=sf=d;
}
else{
if(s2==inc) inc->urm=d;
d->prec=s2;
s2->urm=d;
sf=d;
}
}
int main(){
int i,n,k,v;
nod *inc,*sf,*d;
long s=0;
inc=sf=0;
fin>>n>>k;
for(i=1;i<k;i++){
fin>>v;
adaug_sf(inc,sf,v,i);
}
for(i=k;fin>>v;i++){
if(inc->poz+k-1 < i){
d=inc;
inc=inc->urm;
inc->prec=0;
delete d;
}
adaug_sf(inc,sf,v,i);
s+=inc->inf;
}
fout<<s<<endl;
return 0;
}