#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=111;
int dp[maxn][maxn][maxn],A[maxn];
int main()
{
	int N,K;scanf("%d%d",&N,&K);
	for(int i=1;i<=N;++i) scanf("%d",A+i);
	for(int k=1;k<=K;++k)
	{
		memcpy(dp[k],dp[k-1],sizeof(dp[k]));
		for(int i=N;i;--i)
		{
			for(int l=1,r=i;r<=N;++l,++r)
			{
				dp[k][l][r]=max(dp[k][l][r],max(dp[k][l][r-1]+A[r],dp[k][l+1][r]+A[l]));
				if(k>1) dp[k][l][r]=max(dp[k][l][r],max(dp[k-2][l][r-1],dp[k-2][l+1][r]));
//				printf("dp[%d][%d][%d] : %d\n",k,l,r,dp[k][l][r]);
			}
		}
	}
	printf("%d",dp[K][1][N]);
	return 0;
}