#include <bits/stdc++.h>
using namespace std;
int n, k;
long long a[400001], c[400001], st[35], dp[400001][31], kq;
unordered_map<int, long long> ma[31];
void nhap(){
cin >> n >> k;
for(int i = 1; i <= n; i++){
cin >> a[i];
c[i] = a[i] - i + 1e6;
}
}
void solvetoiuu(){
for(int i = 1; i <= n; i++){
for(int j = 0; j <= k; j++){
if(j == 0)dp[i][j] = a[i];
else dp[i][j] = 0;
dp[i][j] = max(dp[i][j], ma[j][c[i]] + a[i]);
if(j > 0){
dp[i][j] = max(dp[i][j], st[j-1] + a[i]);
}
ma[j][c[i]] = max(ma[j][c[i]], dp[i][j]);
st[j] = max(st[j], dp[i][j]);
kq = max(kq, dp[i][j]);
}
}
cout << kq;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
nhap();
solvetoiuu();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbiwgazsKbG9uZyBsb25nIGFbNDAwMDAxXSwgY1s0MDAwMDFdLCBzdFszNV0sIGRwWzQwMDAwMV1bMzFdLCBrcTsKdW5vcmRlcmVkX21hcDxpbnQsIGxvbmcgbG9uZz4gbWFbMzFdOwp2b2lkIG5oYXAoKXsKCiAgICBjaW4gPj4gbiA+PiBrOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIGNbaV0gPSBhW2ldIC0gaSArIDFlNjsKICAgIH0KfQp2b2lkIHNvbHZldG9pdXUoKXsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDw9IGs7IGorKyl7CiAgICAgICAgICAgIGlmKGogPT0gMClkcFtpXVtqXSA9IGFbaV07CiAgICAgICAgICAgIGVsc2UgZHBbaV1bal0gPSAwOwogICAgICAgICAgICBkcFtpXVtqXSA9IG1heChkcFtpXVtqXSwgbWFbal1bY1tpXV0gKyBhW2ldKTsKICAgICAgICAgICAgaWYoaiA+IDApewogICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoZHBbaV1bal0sIHN0W2otMV0gKyBhW2ldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtYVtqXVtjW2ldXSA9IG1heChtYVtqXVtjW2ldXSwgZHBbaV1bal0pOwogICAgICAgICAgICBzdFtqXSA9IG1heChzdFtqXSwgZHBbaV1bal0pOwogICAgICAgICAgICBrcSA9IG1heChrcSwgZHBbaV1bal0pOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwga3E7Cn0KaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIG5oYXAoKTsKICAgIHNvbHZldG9pdXUoKTsKICAgIHJldHVybiAwOwp9