#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(0);cin.tie(0);
#define ll long long
const int maxn = 5e3+5;
int n, K, L;
ll P[maxn];
ll w[maxn];
pair<ll, int> check(ll lambda) {
    vector<pair<ll, int>> dp(n+1,{0,0});
    for(int i = 1; i <= n;i++){
        dp[i] = dp[i-1];
        if(i - L >= 0){
            ll cur = P[i] - P[i-L];
            ll val = dp[i-L].first + cur - lambda;
            int cnt = dp[i-L].second + 1;
            if(val > dp[i].first || (val == dp[i].first && cnt > dp[i].second)){
                dp[i] = {val, cnt};
            }
        }
    }
    return dp[n];
}
void solve(){
    cin >> n >> K >> L;
    for(int i = 1; i <= n; i++){
        cin >> w[i];
        P[i] = P[i-1] + w[i];
    }
    ll l = -6e12, r = 6e12;
    ll lambda = r;
    while(r - l > 1){
        ll m = l + (r - l) / 2;
        pair<ll, int> it = check(m);
        if(it.second >= K){
            l = m;
            lambda = m;
        } else {
            r = m;
        }
    }
    pair<ll, int> res = check(lambda);
    cout << res.first + lambda*K;
}

signed main(){
    fast;
    solve();
}
