program acm22948;
const maxn=4000;
var f:array[1..maxn,1..maxn] of longint;
a,sum:array[0..maxn] of longint;
d,i,j,k,n,min,max:longint;
begin
fillchar(sum,sizeof(sum),0);
readln(n);
for i:=1 to n do
begin
read(a[i]);
a[n+i]:=a[i];
end;
for i:=1 to 2*n do
sum[i]:=sum[i-1]+a[i];
fillchar(f,sizeof(f),0);
for d:=2 to n do
for i:=1 to 2*n-d+1 do
begin
j:=i+d-1;
if f[i,i]+f[i+1,j]<f[i,j-1]+f[j,j]
then max:=f[i,j-1]+f[j,j] else max:=f[i,i]+f[i+1,j];
f[i,j]:=max+sum[j]-sum[i-1];
end;
max:=0;
for i:=1 to n do
if max<f[i,i+n-1] then max:=f[i,i+n-1];
writeln(max);
end.
/**************************************************************
Problem: 2117
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/