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
****************************************************************/