#include using namespace std; using LL=long long; using ULL=unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) const LL INF=1000000000000000; int N,K,M; LL A[3001][2]; LL dp[3001][3001][2]; deque dpw[3001][2]; int main(){ cin>>N>>K>>M; rep(i,N) cin>>A[i][0]; A[N][0]=0; for(int i=N-1; i>=0; i--) A[i][0]+=A[i+1][0]; rep(i,N+1) A[i][1]=-A[i][0]; rep(t,2) rep(i,N+1) rep(k,K+1) dp[k][i][t]=-INF; rep(t,2) dp[0][0][t]=A[0][t]; rep(t,2) rep(k,K+1) dpw[k][t]={0}; rep(i,N) rep(k,K){ LL tmp = -INF; rep(t,2){ if(dpw[k][t].size()) if(dpw[k][t].front()<=i-M) dpw[k][t].pop_front(); if(dpw[k][t].size()) tmp=max(tmp,dp[k][dpw[k][t].front()][t]-A[i+1][t]); } rep(t,2){ dp[k+1][i+1][t]=tmp+A[i+1][t]; while(dpw[k+1][t].size()) if(dp[k+1][dpw[k+1][t].back()][t]<=dp[k+1][i+1][t]) dpw[k+1][t].pop_back(); else break; dpw[k+1][t].push_back(i+1); } } cout<