#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
typedef long long ll;
const int N=2.5e5+10;
int pos[N];
deque<ll> q;
int n,k,l,r;
ll v[N],s[N],ans,f[N];
int main() {
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++) scanf("%lld",&v[i]),s[i]=s[i-1]+(v[i]<0ll?0ll:v[i]);
l=1;r=0;
for (int i=2,j=0;i<=n;i++,j++) {
ll now=f[j]-s[j];
while (!q.empty()&&q.back()<=now) q.pop_back(),r--;
q.push_back(now);pos[++r]=j;
while (!q.empty()&&pos[l]<i-k) l++,q.pop_front();
f[i]=q.front()+s[i-2]+v[i-1]+v[i];
}
ans=f[1]+s[min(1+k,n)];
for (int i=2;i<=n;i++) {
ans=max(ans,f[i]+s[min(i+k-1,n)]-s[i]);
}
printf("%lld",ans);
}