#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int main() {
ll n, k;
cin >> n >> k;
vector<ll> b(n); // 0-based indexing
for (int i = 0; i < n; ++i) {
cin >> b[i];
}
vector<ll> p(n, 0); // Prefix sum array of size n
p[0] = b[0]; // Initialize first prefix sum
for (int i = 1; i < n; ++i) {
p[i] = b[i] + p[i - 1]; // Compute prefix sum
}
ll final_ans = -1e18;
multiset<ll> u;
for (int j = 0; j < n; ++j) {
ll r = -1e18;
if (j - k >= 0) {
u.erase(u.find(p[j - k])); // Remove outdated prefix sum
}
if (!u.empty()) {
r = p[j] - *u.begin(); // Compute max subarray sum
} else {
r = p[j]; // If no previous sums, take p[j] as the subarray sum
}
final_ans = max(final_ans, r);
u.insert(p[j]);
}
cout << final_ans << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CgppbnQgbWFpbigpIHsKICAgIGxsIG4sIGs7CiAgICBjaW4gPj4gbiA+PiBrOwoKICAgIHZlY3RvcjxsbD4gYihuKTsgIC8vIDAtYmFzZWQgaW5kZXhpbmcKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgY2luID4+IGJbaV07CiAgICB9CgogICAgdmVjdG9yPGxsPiBwKG4sIDApOyAgLy8gUHJlZml4IHN1bSBhcnJheSBvZiBzaXplIG4KCiAgICBwWzBdID0gYlswXTsgIC8vIEluaXRpYWxpemUgZmlyc3QgcHJlZml4IHN1bQogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyArK2kpIHsKICAgICAgICBwW2ldID0gYltpXSArIHBbaSAtIDFdOyAgLy8gQ29tcHV0ZSBwcmVmaXggc3VtCiAgICB9CgogICAgbGwgZmluYWxfYW5zID0gLTFlMTg7CiAgICBtdWx0aXNldDxsbD4gdTsKCiAgICBmb3IgKGludCBqID0gMDsgaiA8IG47ICsraikgewogICAgICAgIGxsIHIgPSAtMWUxODsKCiAgICAgICAgaWYgKGogLSBrID49IDApIHsKICAgICAgICAgICAgdS5lcmFzZSh1LmZpbmQocFtqIC0ga10pKTsgIC8vIFJlbW92ZSBvdXRkYXRlZCBwcmVmaXggc3VtCiAgICAgICAgfQoKICAgICAgICBpZiAoIXUuZW1wdHkoKSkgewogICAgICAgICAgICByID0gcFtqXSAtICp1LmJlZ2luKCk7ICAvLyBDb21wdXRlIG1heCBzdWJhcnJheSBzdW0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByID0gcFtqXTsgIC8vIElmIG5vIHByZXZpb3VzIHN1bXMsIHRha2UgcFtqXSBhcyB0aGUgc3ViYXJyYXkgc3VtCiAgICAgICAgfQoKICAgICAgICBmaW5hbF9hbnMgPSBtYXgoZmluYWxfYW5zLCByKTsKICAgICAgICB1Lmluc2VydChwW2pdKTsKICAgIH0KCiAgICBjb3V0IDw8IGZpbmFsX2FucyA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9