#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<long long> a(n); // a[1..n-1]有效,a[0] unused
for (int i = 1; i <= n-1; ++i) {
cin >> a[i];
}
// 前缀和数组:prefix[i] = a[1] + a[2] + ... + a[i]
vector<long long> prefix(n, 0);
for (int i = 1; i <= n-1; ++i) {
prefix[i] = prefix[i-1] + a[i];
}
long long total = prefix[n-1]; // 不使用跃迁的总耗时
long long max_save = 0;
for (int i = 1; i <= n; ++i) {
// 计算向左跃迁的节省
int left = max(1, i - k);
if (left < i) { // 跃迁后位置在左侧,有节省
long long save = prefix[i-1] - prefix[left-1];
max_save = max(max_save, save);
}
// 计算向右跃迁的节省
int right = min(n, i + k);
if (right > i) { // 跃迁后位置在右侧,有节省
long long save = prefix[right-1] - prefix[i-1];
max_save = max(max_save, save);
}
}
cout << total - max_save << endl;
return 0;
}