#include <iostream>
#include <fstream>
#include <cstring>
#define inf 0x3f3f3f
using namespace std;
ifstream f("ferma.in");
ofstream g("ferma.out");
int n,mn,l1,l2,a[10005],s[10005],dp[10005][2],mx,dr[10005],sol=-2147000000;
void CalcSums()
{ int i,sum;
sum=0;
for(i=n;i>=1;i--)
{ sum+=a[i];
dr[i]=sum;
}
}
void Dinamica(int k)
{ int i,j;
for(j=2;j<=k;j++)
{ l1^=1; l2^=1;
mx=dp[j-1][l1]-s[j-1];
for(i=j;i<=n;i++)
{ dp[i][l2]=s[i]+mx;
if (i>j) dp[i][l2]=max(dp[i][l2],dp[i-1][l2]);
mx=max(mx,dp[i][l1]-s[i]);
}
}
}
int main()
{ int i,j,k,ind=1;
f>>n>>k;
mn=0;
l1=0; l2=1;
for(i=1;i<=n;i++)
{f>>a[i];
s[i]=s[i-1]+a[i];
dp[i][l2]=s[i]-mn;
if (i>1) dp[i][l2]=max(dp[i][l2],dp[i-1][l2]);
if (s[i]<=mn) mn=s[i];
}
Dinamica(k);
for(i=k;i<=n;i++)
sol=max(sol,dp[i][l2]);
l1=0; l2=1;
for(i=1;i<=n;i++)
{ dp[i][l2]=s[i];
if (i>1) dp[i][l2]=max(dp[i][l2],dp[i-1][l2]);
}
Dinamica(k);
CalcSums();
for(i=k;i<=n;i++)
sol=max(sol,dp[i][l2]+s[n]-s[i]);
if (sol<0) g<<"0\n"; else g<<sol;
return 0;
}