// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include<bits/stdc++.h>
using namespace std;
// __builtin_popcount
// __builtin_ctz
#define int long long
#define pii pair<int, int>
#define duoble long double
#define endl '\n'
#define fi first
#define se second
#define mapa make_pair
#define pushb push_back
#define pushf push_front
#define popb pop_back
#define popf pop_front
#define o_ ordered_
#define ins insert
#define era erase
#define pqueue priority_queue
#define minele min_element
#define maxele max_element
#define lb lower_bound // >=
#define ub upper_bound // >
#define debug cout << "NO ERROR", exit(0)
#define FAST ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define ALL(v) v.begin(), v.end()
#define SZ(v) (int)v.size()
#define sqr(x) ((x) * (x))
template<class X, class Y>
bool minimize(X &x, const Y &y) {
if (x > y) {
x = y;
return true;
}
return false;
}
template<class X, class Y>
bool maximize(X &x, const Y &y) {
if (x < y) {
x = y;
return true;
}
return false;
}
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int Rand(const int &l, const int &r) {
assert(l <= r);
int sz = (r - l + 1);
return l + rd() % sz;
}
const int MOD = 1e9 + 7; //998244353;
const int LOG = 18;
const int INF = 1e10 + 7;
const int d4x[4] = {-1, 1, 0, 0};
const int d4y[4] = {0, 0, 1, -1};
const char c4[4] = {'U', 'D', 'R', 'L'};
const int d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1};
const int d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1};
// #define LENGTH 1000005
// #define NMOD 2
// #define BASE 256
// const int HashMod[] = {(int)1e9 + 7, (int)1e9 + 2277, (int)1e9 + 5277, (int)1e9 + 8277, (int)1e9 + 9277};
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// #define o_set tree<int, null_type,less<int>, rb_tree_tag, tree_order_statistics_node_update>
// *(s.find_by_order(2)) : 3rd element in the set i.e. 6
// s.order_of_key(25) : Count of elements strictly smaller than 25 is 4
/* Listen music of IU before enjoy my code */
const int LimN = 4e5 + 5;
int n, k, ans, c[LimN];
int dp[LimN], sum[LimN], pref[LimN];
void solve() {
// dp[i]: tổng số rượu lớn nhất kết thúc tại i (bắt buộc là phải uống thằng i)
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> c[i];
for (int i = 1; i <= n; i++) {
sum[i] = sum[i - 1] + c[i];
}
for (int i = 1; i <= n; i++) {
// cần tính dp[i]
for (int j = max(i - k + 2, 1LL); j <= i; j++) {
// các bạn có thể uống từ j tới i
int sta = j - 2;
if (sta < 0) sta = 0;
else sta = pref[sta];
dp[i] = max(dp[i], sta + (sum[i] - sum[j - 1]));
}
pref[i] = max(pref[i - 1], dp[i]);
}
cout << pref[n] << endl;
}
/* Authors: Nguyen Minh Huy from Le Quy Don high school for Gifted Students Da Nang */
signed main() {
#ifndef ONLINE_JUDGE
freopen("ab.inp", "r", stdin);
freopen("ab.out", "w", stdout);
#else
// freopen("task.inp", "r", stdin);
// freopen("task.out", "w", stdout);
#endif
FAST;
bool TestCase = 0;
int NumTest = 1;
//cin >> NumTest;
for (int i = 1; i <= NumTest; i++) {
if (TestCase) cout << "Case" << " " << i << ": ";
solve();
}
}
Ly8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCi8vICNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4MixibWksYm1pMixsemNudCxwb3BjbnQiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovLyBfX2J1aWx0aW5fcG9wY291bnQKLy8gX19idWlsdGluX2N0egojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBkdW9ibGUgbG9uZyBkb3VibGUKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1hcGEgbWFrZV9wYWlyCiNkZWZpbmUgcHVzaGIgcHVzaF9iYWNrCiNkZWZpbmUgcHVzaGYgcHVzaF9mcm9udAojZGVmaW5lIHBvcGIgcG9wX2JhY2sKI2RlZmluZSBwb3BmIHBvcF9mcm9udAojZGVmaW5lIG9fIG9yZGVyZWRfCiNkZWZpbmUgaW5zIGluc2VydAojZGVmaW5lIGVyYSBlcmFzZQojZGVmaW5lIHBxdWV1ZSBwcmlvcml0eV9xdWV1ZQojZGVmaW5lIG1pbmVsZSBtaW5fZWxlbWVudAojZGVmaW5lIG1heGVsZSBtYXhfZWxlbWVudAojZGVmaW5lIGxiIGxvd2VyX2JvdW5kIC8vID49CiNkZWZpbmUgdWIgdXBwZXJfYm91bmQgLy8gPgojZGVmaW5lIGRlYnVnIGNvdXQgPDwgIk5PIEVSUk9SIiwgZXhpdCgwKQojZGVmaW5lIEZBU1QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKSwgY2luLnRpZSgwKSwgY291dC50aWUoMCk7CiNkZWZpbmUgTUFTSyhpKSAoMUxMIDw8IChpKSkKI2RlZmluZSBCSVQoeCwgaSkgKCgoeCkgPj4gKGkpKSAmIDEpCiNkZWZpbmUgQUxMKHYpIHYuYmVnaW4oKSwgdi5lbmQoKQojZGVmaW5lIFNaKHYpIChpbnQpdi5zaXplKCkKI2RlZmluZSBzcXIoeCkgKCh4KSAqICh4KSkKCnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+CiAgICBib29sIG1pbmltaXplKFggJngsIGNvbnN0IFkgJnkpIHsKICAgICAgICBpZiAoeCA+IHkpIHsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+CiAgICBib29sIG1heGltaXplKFggJngsIGNvbnN0IFkgJnkpIHsKICAgICAgICBpZiAoeCA8IHkpIHsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgptdDE5OTM3IHJkKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CgppbnQgUmFuZChjb25zdCBpbnQgJmwsIGNvbnN0IGludCAmcikgewogICAgYXNzZXJ0KGwgPD0gcik7CiAgICBpbnQgc3ogPSAociAtIGwgKyAxKTsKICAgIHJldHVybiBsICsgcmQoKSAlIHN6Owp9CgoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7IC8vOTk4MjQ0MzUzOwpjb25zdCBpbnQgTE9HID0gMTg7CmNvbnN0IGludCBJTkYgPSAxZTEwICsgNzsKY29uc3QgaW50IGQ0eFs0XSA9IHstMSwgMSwgMCwgMH07CmNvbnN0IGludCBkNHlbNF0gPSB7MCwgMCwgMSwgLTF9Owpjb25zdCBjaGFyIGM0WzRdID0geydVJywgJ0QnLCAnUicsICdMJ307CmNvbnN0IGludCBkOHhbOF0gPSB7MCwgMSwgMSwgMSwgMCwgLTEsIC0xLCAtMX07CmNvbnN0IGludCBkOHlbOF0gPSB7MSwgMSwgMCwgLTEsIC0xLCAtMSwgMCwgMX07CgoKCgovLyAjZGVmaW5lIExFTkdUSCAxMDAwMDA1Ci8vICNkZWZpbmUgTk1PRCAyCi8vICNkZWZpbmUgQkFTRSAyNTYKLy8gY29uc3QgaW50IEhhc2hNb2RbXSA9IHsoaW50KTFlOSArIDcsIChpbnQpMWU5ICsgMjI3NywgKGludCkxZTkgKyA1Mjc3LCAoaW50KTFlOSArIDgyNzcsIChpbnQpMWU5ICsgOTI3N307CgovLyAjaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+Ci8vICNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgovLyB1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKLy8gI2RlZmluZSBvX3NldCB0cmVlPGludCwgbnVsbF90eXBlLGxlc3M8aW50PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4KLy8gKihzLmZpbmRfYnlfb3JkZXIoMikpIDogM3JkIGVsZW1lbnQgaW4gdGhlIHNldCBpLmUuIDYKLy8gcy5vcmRlcl9vZl9rZXkoMjUpIDogQ291bnQgb2YgZWxlbWVudHMgc3RyaWN0bHkgc21hbGxlciB0aGFuIDI1IGlzIDQKCgoKCi8qIExpc3RlbiBtdXNpYyBvZiBJVSBiZWZvcmUgZW5qb3kgbXkgY29kZSAqLwoKY29uc3QgaW50IExpbU4gPSA0ZTUgKyA1OwoKaW50IG4sIGssIGFucywgY1tMaW1OXTsKCmludCBkcFtMaW1OXSwgc3VtW0xpbU5dLCBwcmVmW0xpbU5dOwoKdm9pZCBzb2x2ZSgpIHsKCgogICAgLy8gZHBbaV06IHThu5VuZyBz4buRIHLGsOG7o3UgbOG7m24gbmjhuqV0IGvhur90IHRow7pjIHThuqFpIGkgKGLhuq90IGJ14buZYyBsw6AgcGjhuqNpIHXhu5FuZyB0aOG6sW5nIGkpCgogICAgY2luID4+IG4gPj4gazsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBjW2ldOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgc3VtW2ldID0gc3VtW2kgLSAxXSArIGNbaV07CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgLy8gY+G6p24gdMOtbmggZHBbaV0KCgogICAgICAgIGZvciAoaW50IGogPSBtYXgoaSAtIGsgKyAyLCAxTEwpOyBqIDw9IGk7IGorKykgewogICAgICAgICAgICAvLyBjw6FjIGLhuqFuIGPDsyB0aOG7gyB14buRbmcgdOG7qyBqIHThu5tpIGkgCiAgICAgICAgICAgIAogICAgICAgICAgICBpbnQgc3RhID0gaiAtIDI7CiAgICAgICAgICAgIGlmIChzdGEgPCAwKSBzdGEgPSAwOwogICAgICAgICAgICBlbHNlIHN0YSA9IHByZWZbc3RhXTsKCiAgICAgICAgICAgIGRwW2ldID0gbWF4KGRwW2ldLCBzdGEgKyAoc3VtW2ldIC0gc3VtW2ogLSAxXSkpOwoKICAgICAgICB9CgogICAgICAgIHByZWZbaV0gPSBtYXgocHJlZltpIC0gMV0sIGRwW2ldKTsgICAgICAgIAoKICAgIH0KCiAgICBjb3V0IDw8IHByZWZbbl0gPDwgZW5kbDsKICAgIAoKCgoKfQoKCi8qIEF1dGhvcnM6IE5ndXllbiBNaW5oIEh1eSBmcm9tIExlIFF1eSBEb24gaGlnaCBzY2hvb2wgZm9yIEdpZnRlZCBTdHVkZW50cyBEYSBOYW5nICovCgoKCnNpZ25lZCBtYWluKCkgewoKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJhYi5pbnAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oImFiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgICNlbHNlCiAgICAvLyBmcmVvcGVuKCJ0YXNrLmlucCIsICJyIiwgc3RkaW4pOwogICAgLy8gZnJlb3BlbigidGFzay5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICAjZW5kaWYKICAgIEZBU1Q7CiAgICBib29sIFRlc3RDYXNlID0gMDsKICAgIGludCBOdW1UZXN0ID0gMTsKICAgIC8vY2luID4+IE51bVRlc3Q7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOdW1UZXN0OyBpKyspIHsKICAgICAgICBpZiAoVGVzdENhc2UpIGNvdXQgPDwgIkNhc2UiIDw8ICIgIiA8PCBpIDw8ICI6ICI7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCn0KCgoK