#include using namespace std; typedef long long ll; typedef long double ld; const ll INF = (ll)1e18; const int MAXN = 10 * 1000 + 7; ll dp[MAXN]; int cost[MAXN]; vector > go[MAXN]; int main() { #ifdef LOCAL freopen("input.txt", "r", stdin); #endif int n, k; scanf("%d %d", &n, &k); for (int i = 1; i <= n; i++) { scanf("%d", &cost[i]); int r = min(n, i + k); int l = max(1, i - k); //cerr << l << " " << r << endl; go[r].push_back(make_pair(cost[i], l)); dp[i] = INF; } for (int i = 1; i <= n; i++) { for (int j = 0; j < (int)go[i].size(); j++) { cerr << i << " " << go[i][j].second << endl; int l = go[i][j].second; int w = go[i][j].first; for (int k = l - 1; k < l; k++) { dp[i] = min(dp[i], dp[k] + w); } } } printf("%lld\n", dp[n]); }