#include <iostream>
#include <fstream>
#include <map>
#include <algorithm>
#include <vector>
#include <deque>
using namespace std;
#define all(x) x.begin(), x.end()
#define fs first
#define sc second
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int nmax = 5e6;
deque<int> deq;
int v[nmax + 5];
int N, K;
int main() {
fin >> N >> K;
for (int i = 1; i <= N; ++i) {
fin >> v[i];
if (i <= K) {
while (deq.size() and v[deq.back()] > v[i]) {
deq.pop_back();
}
deq.push_back(i);
}
}
int sum = 0;
for (int i = K + 1; i <= N; ++i) {
sum += v[deq.front()];
while (deq.size() and deq.front() < i - K + 1) deq.pop_front();
while (deq.size() and v[deq.back()] > v[i]) {
deq.pop_back();
}
deq.push_back(i);
}
fout << sum + v[deq.front()];
}