#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double ld; typedef vector < long long > vll; typedef pair pll; typedef pair pii; typedef vector < int > vii; typedef complex < double > Point; #define csl ios_base::sync_with_stdio(false); cin.tie(NULL) #define mp make_pair #define fst first #define snd second ll t, n, m, u, v, q, r, ql, qr, k, l, s, w, z, x, y, d, p, c, L, b; const int N = 2e5 + 500; const int NN = 1e4 + 4; const long long mod = 1e9 + 7; const long long INF = 1LL << 52LL; ll dp[N]; ll dp2[N]; ll A[N]; int main() { csl; cin >> n >> k; for (int i = 1; i <= n; ++i) cin >> A[i]; for (int i = 1; i <= n; ++i) { dp[i] = dp[max(0LL, i - k - 1)] + A[i]; dp2[i] = dp[i]; for (int j = max(1LL, i - k); j <= i - 1; ++j) { dp[i] = min(dp[i], min(dp2[j], dp[j] + A[j])); dp2[i] = min(dp2[i], min(dp[i], dp2[i]) + A[i]); } } cout << min(dp[n], dp2[n]) << '\n'; return 0; }