#define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES //libs #include #include #include #include #include #include #include #include #include #include #include using namespace std; //defines #define infll 8e18 #define ll long long #define itn ll #define vi vector #define vvi vector #define pii pair //constants const double eps = 1e-7; const ll mod = 1000000007; //end of definition void solve() { /*int n; cin >> n; vi a(n); multimap b; for (int i = 0; i < n; i++) { cin >> a[i]; b.insert({ a[i], i }); } ll ans = 0; for (int i = 0; i < n; i++) { ll nowmax = a[i]; b.erase(a[i]); for (int j = i + 1; j < n; j++) { nowmax = max(nowmax, a[j]); if (a[j] * a[i] <= nowmax) ans++; } } cout << ans << endl;*/ int n, k; cin >> n >> k; vi a(n); for (int i = 0; i < n; i++) cin >> a[i]; vvi dp(n+2, vi(2*(k+3), infll)); for (int i = 0; i <= min(k, n - 1);i++) dp[i][k + 3-i] = 0; int nul = k + 3; for (int i = 0; i < n; i++) { for (int j = 0; j < dp[i].size(); j++) { if (dp[i][j] == 0) { dp[i + 1][nul + k] = min(dp[i + 1][nul + k], dp[i][j] + a[i]); } if (j > 3) { dp[i + 1][j - 1] = min(dp[i + 1][j - 1], dp[i][j]); } else dp[i + 1][nul+k] = min(dp[i + 1][nul+k], dp[i][j] + a[i]); } } ll ans = infll; for (int i = k+3; i < dp[n].size(); i++) ans = min(ans, dp[n][i]); cout << ans << endl; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #ifdef _DEBUG freopen("input.txt", "r", stdin); //freopen("input.txt", "w", stdout); #endif solve(); return 0; }