#include #include using namespace std; long op(long a,long b){return max(a,b);} long e(){return -1e18;} int N,K,A[2<<17]; long S[2<<17]; main() { cin>>N>>K; K--; for(int i=0;i>A[i]; S[i+1]=S[i]+A[i]; } atcoder::segtreeseg(N+2); seg.set(0,0L); long ans=0; for(int i=1;i<=N;i++) { long now=seg.prod(max(i-K,0),i)+S[i]; ans=max(ans,now); seg.set(i,op(seg.get(i),seg.get(i-1)+S[i-1]-S[i])); seg.set(i+1,now-S[i+1]); } cout<