#include<bits/stdc++.h>
using namespace std;
int n,a[5001],dp[5001][5001][2];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
dp[i][i][1]=a[i];
dp[i][i][0]=0;
}
for(int i=1;i<n;i++){
dp[i][i+1][1]=max(a[i],a[i+1]);
dp[i][i+1][0]=min(a[i],a[i+1]);
}
for(int len=3;len<=n;len++){
for(int l=1;l<=len-n+1;l++){
int r=l+len-1;
if(a[l]+dp[l+1][r][0]>a[r]+dp[l][r-1][0]){
dp[l][r][1]=a[l]+dp[l+1][r][0];
dp[l][r][0]=dp[l+1][r][1];
}
else{
dp[l][r][1]=a[r]+dp[l][r-1][0];
dp[l][r][0]=dp[l][r-1][1];
}
}
}
printf("%d",dp[1][n][1]);
return 0;
}