#include <fstream>
#include <deque>
using namespace std;
typedef struct elem
{
int pos;
int val;
public:
elem(int pos, int val) : pos(pos), val(val) {};
}Elem;
void InsertAtTheEnd(Elem *elem, deque<Elem*> &queue);
int main()
{
ifstream fin;
ofstream fout;
fout.open("deque.out");
fin.open("deque.in");
int n, k, x;
deque<Elem*> queue;
fin >> n >> k;
for(int i = 1; i <= k; i++)
{
fin >> x;
Elem* newElem = new Elem(i, x);
InsertAtTheEnd(newElem, queue);
}
long long sum = queue.front()->val;
for(int i = k + 1; i <= n; i++)
{
fin >> x;
Elem* front = queue.front();
Elem* newElem = new Elem(i, x);
if(i - k >= front->pos)
{
queue.pop_front();
}
InsertAtTheEnd(newElem, queue);
sum += queue.front()->val;
}
fout << sum;
fin.close();
fout.close();
return 0;
}
void InsertAtTheEnd(Elem *elem, deque<Elem*> &queue)
{
while(!queue.empty() && queue.back()->val > elem->val)
{
queue.pop_back();
}
queue.push_back(elem);
}