#include<bits/stdc++.h>
#define N 2005
using namespace std;
typedef long long ll;


struct dat{
  ll v,f;
};

int n;
ll A[N];
dat dp[N][N];

int main(){
  
  cin>>n;

  for(int i=0;i<n;i++) cin>>A[i];

  for(int i=0;i<n;i++)
    for(int j=0;j<n;j++) dp[i][j].v=0,dp[i][j].f=0;

  for(int i=0;i<n;i++) dp[i][i].v=A[i];

  for(int i=0;i<n-1;i++){

    for(int l=0;l<n;l++){
      
      int r=(l+i)%n;

      if(dp[l][r].f==0){

	if(A[(l-1+n)%n]>A[(r+1)%n])dp[(l-1+n)%n][r].v=max(dp[(l-1+n)%n][r].v,dp[l][r].v);
	else dp[l][(r+1)%n].v=max(dp[l][(r+1)%n].v,dp[l][r].v);
	
      }else{
	
	dp[(l-1+n)%n][r].v=max(dp[(l-1+n)%n][r].v,dp[l][r].v+A[(l-1+n)%n]);
	dp[l][(r+1)%n].v=max(dp[l][(r+1)%n].v,dp[l][r].v+A[(r+1)%n]);
	
      }
      
      dp[(l-1+n)%n][r].f=dp[l][(r+1)%n].f=!dp[l][r].f;
      
      
    }

  }

  ll ans=0;
  
  for(int l=0;l<n;l++)
    for(int r=0;r<n;r++) ans=max(ans,dp[l][r].v);
  
  cout<<ans<<endl;
  
  return 0;
}