#include <bits/stdc++.h>   using namespace std;   const long long MAXN = 1000005;   long long pw(long long b, long long r, long long md) {     long long ans = 1;     while (r) {       if (r & 1) ans = (ans * b) % md;       b = (b * b) % md;       r >>= 1;     }     return ans;   }   bool cmp(pair<long long, long long> a, pair<long long, long long> b) {     if (a.first == b.first) return a.second < b.second;     return a.first > b.first;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long n, m, k;     cin >> n >> m >> k;     long long dp[n][k + 1];     for (long long i = 0; i <= n - 1; ++i)       for (long long j = 0; j <= k; ++j) dp[i][j] = -1e18;     long long arr[n];     for (long long i = 0; i <= n - 1; ++i) cin >> arr[i];     long long pref[n];     pref[0] = arr[0];     for (long long i = 1; i <= n - 1; ++i) pref[i] = pref[i - 1] + arr[i];     for (long long i = 0; i <= n - 1; ++i) dp[i][0] = 0;     dp[m - 1][1] = pref[m - 1];     long long ans = 0;     for (long long i = m; i <= n - 1; ++i) {       for (long long j = 0; j <= k; ++j) {         dp[i][j] = dp[i - 1][j];         if (j == 0) continue;         dp[i][j] = max(dp[i][j], dp[i - m][j - 1] + pref[i] - pref[i - m]);       }     }     for (long long i = 0; i <= n - 1; ++i) ans = max(ans, dp[i][k]);     cout << ans <<   n ;     return 0;   }   