#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int m,n,k;
cin>>m>>n>>k;
vector<int>a(m+1);
for(int i=1;i<=m;i++){
cin>>a[i];
}
vector<int>dp(k+1,-1);
dp[0]=n;
int maxenergy = n;
for(int i=1;i<=m;i++){
for(int j=k;j>=0;j--){
int best = -1;
//不采集
if (dp[j] > 0) {
best = max(dp[j] - 1,best);
}
// 采集小行星 a[i]。
// 从上一步的 dp[j-1] 状态转移而来。
if (j > 0 && dp[j - 1] > 0) {
best = max(dp[j - 1] - 1 + a[i],best);
}
dp[j]=best;
maxenergy=max(maxenergy,dp[j]);
}
}
cout << maxenergy << endl;
return 0;
}