#include <bits/stdc++.h>
using namespace std;
int n,b,a[3832],dp[3832][3832][3],ans;
int main(){
scanf("%d%d",&n,&b);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
for(int j=b;j>=0;j--){
dp[i][j][0]=dp[i][j][1]=dp[i][j][2]=-1;
}
}
dp[1][0][0]=0;
dp[1][1][1]=0;
for(int i=2;i<=n;i++){
dp[i][0][0]=max(dp[i-1][0][0],dp[i-1][0][2]);
for(int j=b;j>=1;j--){
dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][2]);
dp[i][j][1]=dp[i-1][j-1][0];
if(dp[i-1][j-1][1]>=0 || dp[i-1][j-1][2]>=0){
dp[i][j][2]=max(dp[i-1][j-1][1],dp[i-1][j-1][2])+a[i];
}
}
}
ans=max(dp[n][b][0],dp[n][b][2]);
for(int i=1;i<=n;i++){
for(int j=b;j>=0;j--){
dp[i][j][0]=dp[i][j][1]=dp[i][j][2]=-1;
}
}
dp[1][1][2]=a[1];
for(int i=2;i<=n;i++){
dp[i][0][0]=max(dp[i-1][0][0],dp[i-1][0][2]);
for(int j=b;j>=1;j--){
dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][2]);
dp[i][j][1]=dp[i-1][j-1][0];
if(dp[i-1][j-1][1]>=0 || dp[i-1][j-1][2]>=0){
dp[i][j][2]=max(dp[i-1][j-1][1],dp[i-1][j-1][2])+a[i];
}
}
}
ans=max(ans,max(dp[n][b][1],dp[n][b][2]));
cout<<ans<<endl;
return 0;
}