#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ws ws_____________________ #define y1 y1_____________________ #define y0 y0_____________________ #define left left_________________ #define right right_______________ #define next next_________________ #define prev prev_________________ #define hash hash_________________ #define pb push_back #define fst first #define snd second #define mp make_pair #define sz(C) ((int) (C).size()) #define forn(i, n) for (int i = 0; i < (int) n; ++i) #define ford(i, n) for (int i = ((int) n) - 1; i >= 0; --i) #define all(C) begin(C), end(C) typedef long long ll; typedef unsigned long long ull; typedef unsigned int uint; typedef pair pii; typedef pair pll; typedef vector vll; typedef vector vi; typedef vector > vvi; typedef vector vii; typedef long double ld; typedef complex cd; typedef vector vcd; #define FILE_NAME "a" const int MAXN = 1e4 + 10; const ll INF = 1e18; int n, k; ll dp[MAXN]; ll min_dp[MAXN]; int c[MAXN]; bool read() { if (scanf("%d%d", &n, &k) < 2) { return false; } forn(i, n) { scanf("%d", &c[i]); } return true; } ll solve() { ll ans = INF; forn(it, 2) { for (int i = 0; i - k <= 0; ++i) { ll cur = 0; int j; for (j = i; j < n; j += 2 * k + 1) { cur += c[j]; } if (j + k >= n - 1) { ans = min(ans, cur); } } reverse(c, c + n); } return ans; } int main() { #ifdef LOCAL freopen(FILE_NAME ".in", "r", stdin); // freopen(FILE_NAME ".out", "w", stdout); #endif while (read()) { cout << solve() << '\n'; } #ifdef LOCAL cerr.precision(5); cerr << "Time: " << fixed << (double) clock() / CLOCKS_PER_SEC << endl; #endif return 0; }