#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
long long n,a[4001],sum[4001]={0},f_max[4001][4001]={0};
void init();
void work();
int my_min(int,int);
int my_max(int,int);
int main()
{
	//freopen("stone5.in","r",stdin);
	//freopen("stone5.out","w",stdout);
	init();
	work();
	return 0;	
}
void init()
{
	cin>>n;	
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i+n]=a[i];
	}
	for(int i=1;i<=2*n;i++) sum[i]=sum[i-1]+a[i];
}
void work()
{
	for(int d=2;d<=n;d++)
	{
		for(int i=1;i<=2*n-d+1;i++)
		{
			int j=i+d-1;
			//f_min[i][j]=0x7fffffff/2;
			/*for(int k=i;k<j;k++)
			{
				f_max[i][j]=my_max(f_max[i][j],f_max[i][k]+f_max[k+1][j]);
				f_min[i][j]=my_min(f_min[i][j],f_min[i][k]+f_min[k+1][j]);
				
			}*/
			f_max[i][j]=my_max(f_max[i+1][j],f_max[i][j-1])+sum[j]-sum[i-1];
			//f_min[i][j]=my_min(f_min[i+1][j],f_min[i][j-1])+sum[j]-sum[i-1];
			//cout<<d<<' '<<sum[j]-sum[i-1]<<' '<<i<<' '<<j<<' '<<f_min[i][j]<<endl;			
		}
	}
	long long tot2=0;
	//for(int i=1;i<=n;i++) tot1=my_min(tot1,f_min[i][i+n-1]);
	for(int i=1;i<=n;i++) tot2=my_max(tot2,f_max[i][i+n-1]);
	cout<<tot2<<endl;
}
int my_min(int x,int y)
{
	if(x<y)return x;
	else return y;
}
int my_max(int x,int y)
{
	if(x>y)return x;
	else return y;
}
/**************************************************************
	Problem: 1685
	User: zhanghanbin
	Language: C++
	Result: Runtime Error
****************************************************************/