/* Towhidul Islam University Of Dhaka Problem Name : Algorithm Used : */ #include typedef long long ll; #define SSTR(x) dynamic_cast< ostringstream & >( \ (ostringstream() << dec << x )).str() #define pb push_back #define mem(a, x) memset(a, x, sizeof a) #define PI acos(-1) #define all(a) a.begin(), a.end() #define ff first #define ss second #define read(in) freopen("in.txt", "r", stdin) #define write(out) freopen("out.txt", "w", stdout) #define INF 1<<30 #define eps 1e-9 #define FORN(i, n) for(int i = 0; i < n; i++) #define FORAB(i, x, n) for(int i = x; i < n; i++) #define FORD(i, x, n) for(int i= n - 1; i >= x; i--) #define scan(n) scanf("%d", &n) #define print(n) printf("%d\n", n) #define DBG(x) cerr<<#x<<" : "< #define MOD 1000000007 #define MAX 1000007 int Set(int N, int pos) { return N = N | (1 << pos); } int reSet(int N, int pos) { return N = N & ~(1 << pos); } bool check(int N, int pos) { return (bool)(N & (1 << pos)); } using namespace std; ll C[MAX], dp[MAX]; int n, k; ll go(int c){ //DBG(c); if(c >= n) return 0; if(dp[c] != -1) return dp[c]; ll ret = (1LL << 60); for(int i = 0; i <= k && (i + c) < n; i++){ int kk = c + i; for(int j = 0; j <= k && (j + kk) < n; j++){ ret = min(ret, C[kk] + go(kk + j + 1)); } } return dp[c] = ret; } int main() { // read(in); // write(out); cin>>n>>k; FORAB(i, 0, n){ cin>>C[i]; } mem(dp, -1); cout<