/* SUPTO UNIVERSITY OF DHAKA */ #include using namespace std; #define D(x) cerr<<#x " = "<<(x)< pii; #define eps 1e-9 #define MAX 100005 #define MAXL 20 #define MAXE 100000 //const int mod = 100000007; //int dx[] = {0,0,1,-1}; //int dy[] = {1,-1,0,0}; //int dx[] = {-1,-1,-1,0,0,1,1,1}; //int dy[] = {-1,0,1,-1,1,-1,0,1}; const ll inf = 1LL<<60; ll c[1005], lft[1005], rgt[1005], mx[1005]; int main() { int n , k, i, j; scanf("%d %d", &n, &k); for(i = 1; i <= n; i++) scanf("%lld", &c[i]); lft[0] = 0; for(i = 1; i <= n; i++) { lft[i] = inf; for(j = i; j > 0 && i-j <= k; j--) { lft[i] = min(lft[i], c[j]+lft[max(0, j-k-1)]); } } rgt[n+1] = 0; for(i = n; i > 0; i--) { rgt[i] = inf; for(j = i; j <= n && j-i <= k; j++) { rgt[i] = min(rgt[i], c[j]+rgt[min(n+1, j+k+1)]); } } ll ans = inf; for(i = 1; i <= n; i++) { ans = min(ans, c[i]+lft[max(0, i-k-1)]+rgt[min(n+1, i+k+1)]); for(j = i; j > 0 && i-j <= k; j--) { ans = min(ans, c[j]+lft[max(0, j-k-1)]+rgt[min(n+1, j+k+1)]); } for(j = i; j <= n && j-i <= k; j++) { ans = min(ans, c[j]+rgt[min(n+1, j+k+1)]+lft[max(0, j-k-1)]); } } printf("%lld\n", ans); return 0; }