#include <bits/stdc++.h>
#define ll long long
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
template <typename T> using o_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T, typename R> using o_map = tree<T, R, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define inf 1e9
#define MOD 1000000007
vector<vector < ll > > dp( 5001, vector<ll>(5001, -1));
vector < ll > a ;
ll n , sum = 0 ;
ll find_max(ll left , ll right , int player ) {
if (left == right ) {
if (player == 0 ) return a[left] ;
else return 0 ;
}
ll &p = dp[left][right] ;
if (p != -1 )return p ;
if (player == 0 ) return p = max ( a[left] + find_max (left +1 , right , 1 ) , a[right] + find_max( left , right -1 , 1) );
return p = min ( find_max (left +1 , right , 0 ) , find_max( left , right -1 , 0) );
}
void solve() {
cin >> n ;
a.assign (n + 1 , 0 ) ;
for (int i = 0 ; i < n ; i++) {
cin >> a[i] ;
sum+=a[i] ;
}
cout << find_max (0 , n-1 , 0 );
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgb19zZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSPiB1c2luZyBvX21hcCA9IHRyZWU8VCwgUiwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CiNkZWZpbmUgaW5mIDFlOQojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CnZlY3Rvcjx2ZWN0b3IgPCBsbCA+ID4gZHAoIDUwMDEsIHZlY3RvcjxsbD4oNTAwMSwgLTEpKTsKdmVjdG9yICA8IGxsID4gYSA7CiBsbCBuICwgc3VtICA9IDAgOwpsbCBmaW5kX21heChsbCBsZWZ0ICAgLCBsbCByaWdodCAsIGludCBwbGF5ZXIgICkgewogICAgaWYgKGxlZnQgPT0gIHJpZ2h0ICkgewogICAgICAgIGlmIChwbGF5ZXIgPT0gMCApIHJldHVybiBhW2xlZnRdIDsKICAgICAgICBlbHNlIHJldHVybiAgMCA7CiAgICB9CiAgICBsbCAmcCA9IGRwW2xlZnRdW3JpZ2h0XSAgOwogICAgaWYgKHAgIT0gLTEgKXJldHVybiBwICAgOwogICAgaWYgKHBsYXllciAgPT0gMCApIHJldHVybiAgcCA9IG1heCAoIGFbbGVmdF0gKyBmaW5kX21heCAobGVmdCArMSAsIHJpZ2h0ICwgMSAgICApICwgYVtyaWdodF0gICsgZmluZF9tYXgoIGxlZnQgLCByaWdodCAtMSAsICAxKSApOwogICAgcmV0dXJuICBwID0gbWluICggIGZpbmRfbWF4IChsZWZ0ICsxICwgcmlnaHQgLCAgICAgIDAgICApICwgICBmaW5kX21heCggbGVmdCAsIHJpZ2h0IC0xICwgIDApICk7Cgp9CnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA7CiAgICBhLmFzc2lnbiAobiArIDEgICAsICAwICkgOwogICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgbiA7IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldIDsKICAgICAgICBzdW0rPWFbaV0gOwogICAgfQogICAgY291dCA8PCBmaW5kX21heCAoMCAsIG4tMSAgLCAwICk7CgoKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKICAgIGxsIHQgPSAxOwoKICAgIC8vY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9