#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
inline int power(int a, int b, int mod=M) {
int x = 1;
a %= mod;
while (b) {
if (b & 1) x = (x * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return x;
}
//_ ***************************** START Below *******************************
vector<int> a;
int consistency1(int n, int m, int k){
vector<vector<int>> dp(n+1, vector<int>(k+1, -INF));
dp[0][0] = 0;
for(int i=m; i<=n; i++){
for(int x=1; x<=k; x++){
int sum = 0;
int j = i;
while(j>=i-m+1){
sum += a[j-1];
j--;
}
while(j>=0){
dp[i][x] = max(dp[i][x] , dp[j][x-1] + sum );
j--;
}
}
}
int maxi = -INF;
for(int i=1; i<=n; i++){
maxi = max(maxi, dp[i][k]);
}
return maxi;
}
int consistency2(int n, int m, int k){
vector<vector<int>> dp(n+1, vector<int>(k+1, -INF));
vector<vector<int>> pMaxi(n+1, vector<int>(k+1, 0));
dp[0][0] = 0;
for(int x=1; x<=k; x++){
int sum = 0;
for(int i=1, j=1; i<=n; i++){
sum += a[i-1];
if(i-j == m){
sum -= a[j-1];
j++;
}
if(i-j+1 == m){
dp[i][x] = pMaxi[j-1][x-1] + sum;
pMaxi[i][x] = max(pMaxi[i-1][x], dp[i][x]);
}
}
}
return pMaxi[n][k];
}
//* Space optimized
int consistency3(int n, int m, int k){
vector<int> prevPMaxi(n+1, 0);
vector<int> curPMaxi(n+1, 0);
for(int x=1; x<=k; x++){
int sum = 0;
for(int i=1, j=1; i<=n; i++){
sum += a[i-1];
if(i-j == m){
sum -= a[j-1];
j++;
}
if(i-j+1 == m){
int dp = prevPMaxi[j-1] + sum;
curPMaxi[i] = max(curPMaxi[i-1], dp);
}
}
prevPMaxi = curPMaxi;
}
return prevPMaxi[n];
}
//? Approach 2 :
int consistency4(int n, int m, int k){
vector<int> prevDp(n, 0);
vector<int> curDp(n, 0);
for(int x = 1; x <= k; x++){
int sum = 0;
for(int i = 0, j = 0; i < n; i++){
sum += a[i];
if(i - j == m){
sum -= a[j];
j++;
}
if(i-1 >= 0) curDp[i] = curDp[i-1];
if(i - j + 1 == m){
if(j > 0)
curDp[i] = max(curDp[i], prevDp[j-1] + sum);
else
curDp[i] = max(curDp[i], sum);
}
}
prevDp = curDp;
}
return prevDp[n-1];
}
int practice(int n, int m, int k){
return 0;
}
void solve() {
int n, m, k;
cin>> n >> m >> k;
a.resize(n);
for(int i=0; i<n; i++) cin >> a[i];
// cout << consistency1(n, m, k) << " " << consistency2(n, m, k) << " " << consistency3(n, m, k) << endl;
cout << consistency4(n, m, k) << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQojZGVmaW5lIHByaW50KGEpICAgICAgICAgZm9yKGF1dG8geCA6IGEpIGNvdXQgPDwgeCA8PCAiICI7IGNvdXQgPDwgZW5kbAoKCmNvbnN0IGludCBNID0gMTAwMDAwMDAwNzsKY29uc3QgaW50IE4gPSAzZTUrOTsKY29uc3QgaW50IElORiA9IDJlOSsxOwpjb25zdCBpbnQgTElORiA9IDIwMDAwMDAwMDAwMDAwMDAwMDE7CgppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYiwgaW50IG1vZD1NKSB7CiAgICBpbnQgeCA9IDE7CiAgICBhICU9IG1vZDsKICAgIHdoaWxlIChiKSB7CiAgICAgICAgaWYgKGIgJiAxKSB4ID0gKHggKiBhKSAlIG1vZDsgCiAgICAgICAgYSA9IChhICogYSkgJSBtb2Q7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKLy9fICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFNUQVJUIEJlbG93ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgoKCnZlY3RvcjxpbnQ+IGE7CgppbnQgY29uc2lzdGVuY3kxKGludCBuLCBpbnQgbSwgaW50IGspewoJCgl2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4rMSwgdmVjdG9yPGludD4oaysxLCAtSU5GKSk7CglkcFswXVswXSA9IDA7CgkKCWZvcihpbnQgaT1tOyBpPD1uOyBpKyspewoJCQoJCWZvcihpbnQgeD0xOyB4PD1rOyB4KyspewoJCQkKCQkJaW50IHN1bSA9IDA7CgkJCWludCBqID0gaTsKCQkJd2hpbGUoaj49aS1tKzEpewoJCQkJc3VtICs9IGFbai0xXTsKCQkJCWotLTsKCQkJfQoJCQkKCQkJd2hpbGUoaj49MCl7CgkJCQlkcFtpXVt4XSA9IG1heChkcFtpXVt4XSAsIGRwW2pdW3gtMV0gKyBzdW0gKTsKCQkJCWotLTsKCQkJfQoJCX0KCX0KCQoJaW50IG1heGkgPSAtSU5GOwoJZm9yKGludCBpPTE7IGk8PW47IGkrKyl7CgkJbWF4aSA9IG1heChtYXhpLCBkcFtpXVtrXSk7Cgl9CgkKCXJldHVybiBtYXhpOwp9CgoKCgppbnQgY29uc2lzdGVuY3kyKGludCBuLCBpbnQgbSwgaW50IGspewoJCgl2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4rMSwgdmVjdG9yPGludD4oaysxLCAtSU5GKSk7Cgl2ZWN0b3I8dmVjdG9yPGludD4+IHBNYXhpKG4rMSwgdmVjdG9yPGludD4oaysxLCAwKSk7CglkcFswXVswXSA9IDA7CgkKCWZvcihpbnQgeD0xOyB4PD1rOyB4KyspewoJCQkKCQlpbnQgc3VtID0gMDsKCQlmb3IoaW50IGk9MSwgaj0xOyBpPD1uOyBpKyspewoJCQlzdW0gKz0gYVtpLTFdOwoJCgkJCWlmKGktaiA9PSBtKXsKCQkJCXN1bSAtPSBhW2otMV07CgkJCQlqKys7CgkJCX0JCQoJCQkKCQkJaWYoaS1qKzEgPT0gbSl7CgkJCQlkcFtpXVt4XSA9IHBNYXhpW2otMV1beC0xXSArIHN1bTsKCQkJCXBNYXhpW2ldW3hdID0gbWF4KHBNYXhpW2ktMV1beF0sIGRwW2ldW3hdKTsKCQkJfQoJCX0KCX0KCQoJCglyZXR1cm4gcE1heGlbbl1ba107Cn0KCgoKCi8vKiBTcGFjZSBvcHRpbWl6ZWQgCgppbnQgY29uc2lzdGVuY3kzKGludCBuLCBpbnQgbSwgaW50IGspewoJCgl2ZWN0b3I8aW50PiBwcmV2UE1heGkobisxLCAwKTsKCXZlY3RvcjxpbnQ+IGN1clBNYXhpKG4rMSwgMCk7CgkKCWZvcihpbnQgeD0xOyB4PD1rOyB4KyspewoJCQkKCQlpbnQgc3VtID0gMDsKCQlmb3IoaW50IGk9MSwgaj0xOyBpPD1uOyBpKyspewoJCQlzdW0gKz0gYVtpLTFdOwoJCgkJCWlmKGktaiA9PSBtKXsKCQkJCXN1bSAtPSBhW2otMV07CgkJCQlqKys7CgkJCX0JCQoJCQkKCQkJaWYoaS1qKzEgPT0gbSl7CgkJCQlpbnQgZHAgPSBwcmV2UE1heGlbai0xXSArIHN1bTsKCQkJCWN1clBNYXhpW2ldID0gbWF4KGN1clBNYXhpW2ktMV0sIGRwKTsKCQkJfQoJCX0KCQkKCQlwcmV2UE1heGkgPSBjdXJQTWF4aTsKCX0KCQoJCglyZXR1cm4gcHJldlBNYXhpW25dOwp9CgoKCgovLz8gQXBwcm9hY2ggMiA6IAppbnQgY29uc2lzdGVuY3k0KGludCBuLCBpbnQgbSwgaW50IGspewoKICAgIHZlY3RvcjxpbnQ+IHByZXZEcChuLCAwKTsKICAgIHZlY3RvcjxpbnQ+IGN1ckRwKG4sIDApOyAgICAgIAoKICAgIGZvcihpbnQgeCA9IDE7IHggPD0gazsgeCsrKXsKCiAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgZm9yKGludCBpID0gMCwgaiA9IDA7IGkgPCBuOyBpKyspewogICAgICAgICAgICBzdW0gKz0gYVtpXTsKCiAgICAgICAgICAgIGlmKGkgLSBqID09IG0pewogICAgICAgICAgICAgICAgc3VtIC09IGFbal07CiAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKGktMSA+PSAwKQljdXJEcFtpXSA9IGN1ckRwW2ktMV07ICAgICAgICAgIAoKICAgICAgICAgICAgaWYoaSAtIGogKyAxID09IG0pewogICAgICAgICAgICAgICAgaWYoaiA+IDApCiAgICAgICAgICAgICAgICAgICAgY3VyRHBbaV0gPSBtYXgoY3VyRHBbaV0sIHByZXZEcFtqLTFdICsgc3VtKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBjdXJEcFtpXSA9IG1heChjdXJEcFtpXSwgc3VtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHJldkRwID0gY3VyRHA7CiAgICB9CgogICAgcmV0dXJuIHByZXZEcFtuLTFdOwp9CgoKCgoKCgoKCgoKaW50IHByYWN0aWNlKGludCBuLCBpbnQgbSwgaW50IGspewoKCiAgICByZXR1cm4gMDsKfQoKCgoKCnZvaWQgc29sdmUoKSB7CiAgICAKICAgIGludCBuLCBtLCBrOwogICAgY2luPj4gbiA+PiBtID4+IGs7CiAgICAKICAgIGEucmVzaXplKG4pOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSBjaW4gPj4gYVtpXTsKICAgIAogICAgLy8gY291dCA8PCBjb25zaXN0ZW5jeTEobiwgbSwgaykgPDwgIiAiIDw8IGNvbnNpc3RlbmN5MihuLCBtLCBrKSA8PCAiICIgPDwgY29uc2lzdGVuY3kzKG4sIG0sIGspIDw8IGVuZGw7CiAgICBjb3V0IDw8IGNvbnNpc3RlbmN5NChuLCBtLCBrKSA8PCBlbmRsOwoKCn0KCgoKCgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9