#include <iostream>
#include <fstream>
using namespace std;
const int MAXN=5000001l;
ifstream f("deque.in");
ofstream g("deque.out");
int A[MAXN],N,K;///datele de intrare
long long sMin=0;
int D[MAXN],
p=1,u=0;///init deque p<u ==> deque-ul este vid
void calcul()
{
for(int i=1; i<=N; i++)
{
while(p<=u && A[i] <= A[D[u]]) u--;
///Se adauga pozitia elemntului curent in deque
D[++u]=i;
/**
Daca elementul minim coincide cu cel de pe pozitia i-K,
aceasta pozitie se elimina din deque,
deoarece nu mai conteaza pentru pasii >=i
*/
if(D[p]==i-K)p++;
///Preluam minimul din varful deque-ului
if(i>=K) sMin +=A[D[p]];
}
}
int main()
{
f >> N >> K;
for(int i=1; i<=N; i++)
f>>A[i];
calcul();
g<<sMin;
f.close();
g.close();
return 0;
}