#include <iostream>
using namespace std;
typedef long long ll;
ll dp[4000][4000],n,a,b,ans,x;
ll f(ll a,ll b,ll cnt){
    if(a==b&&cnt%2==0)return 0;
    if(dp[a][b]>0&&cnt%2==1)return dp[a][b];
    if(cnt%2==1){
        x=max(f(a+1,b,cnt+1)+dp[a][a],f(a,b-1,cnt+1)+dp[b][b]);
        dp[a][b]=x;
        return x;
    }
    else{
        if(dp[a][a]>dp[b][b])x=f(a+1,b,cnt+1);
        else x=f(a,b-1,cnt+1);
        dp[a][b]=x;
        return x;
    }
}
int main(void){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a;
        dp[i][i]=a;
        dp[i+n][i+n]=a;
    }
    for(int i=0;i<n;i++){
        ans=max(ans,dp[i][i]+f(i+1,i+n-1,0));
    }
    cout<<ans<<endl;
}

