#include <iostream>
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N = 3e3 + 5;
struct info{
ll x;
ll y;
};
info dp[N][N][2];
bool vis[N][N][2];
int n;
vector<ll>a;
info solve(int l, int r, int t){
info val; val.x = 0; val.y = 0;
if(l > r) return val;
if(vis[l][r][t]) return dp[l][r][t];
vis[l][r][t] = 1;
if(t == 0){
info op1;
info res = solve(l,r-1,1);
op1.x = a[r] + res.x;
op1.y = res.y;
info op2;
info res2 = solve(l+1,r,1);
op2.x = a[l] + res2.x; op2.y = res2.y;
ll op1dif = op1.x - op1.y;
ll op2dif = op2.x - op2.y;
if(op1dif >= op2dif) return dp[l][r][t] = op1;
else return dp[l][r][t] = op2;
}
else {
info op1;
info res = solve(l,r-1,0);
op1.y = a[r] + res.y;
op1.x = res.x;
info op2;
info res2 = solve(l+1,r,0);
op2.y = a[l] + res2.y; op2.x = res2.x;
ll op1dif = op1.x - op1.y;
ll op2dif = op2.x - op2.y;
if(op1dif <= op2dif) return dp[l][r][t] = op1;
else return dp[l][r][t] = op2;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
memset(dp, -1, sizeof(dp));
cin>>n;
a.resize(n);
for(int i = 0; i < n; i++) cin>>a[i];
info ans = solve(0,n - 1, 0);
cout<<ans.x - ans.y<<endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4gCnR5cGVkZWYgbG9uZyBsb25nIGxsOyAKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOID0gM2UzICsgNTsgCnN0cnVjdCBpbmZvewogICAgIGxsIHg7IAogICAgIGxsIHk7IAp9OyAKaW5mbyBkcFtOXVtOXVsyXTsgCmJvb2wgdmlzW05dW05dWzJdOyAKCmludCBuOyAKdmVjdG9yPGxsPmE7IAppbmZvIHNvbHZlKGludCBsLCBpbnQgciwgaW50IHQpewoJaW5mbyB2YWw7IHZhbC54ID0gMDsgdmFsLnkgPSAwOyAKCWlmKGwgPiByKSByZXR1cm4gdmFsOyAKCWlmKHZpc1tsXVtyXVt0XSkgcmV0dXJuIGRwW2xdW3JdW3RdOyAKICAgIHZpc1tsXVtyXVt0XSA9IDE7IAoKCWlmKHQgPT0gMCl7CiAgICAgICAgaW5mbyBvcDE7IAogICAgICAgIGluZm8gcmVzID0gc29sdmUobCxyLTEsMSk7IAogICAgICAgIG9wMS54ID0gYVtyXSArIHJlcy54OyAKICAgICAgICBvcDEueSA9IHJlcy55OyAKICAgICAgICBpbmZvIG9wMjsgCiAgICAgICAgaW5mbyByZXMyID0gc29sdmUobCsxLHIsMSk7IAogICAgICAgIG9wMi54ID0gYVtsXSArIHJlczIueDsgb3AyLnkgPSByZXMyLnk7IAogICAgICAgIGxsIG9wMWRpZiA9IG9wMS54IC0gb3AxLnk7IAogICAgICAgIGxsIG9wMmRpZiA9IG9wMi54IC0gb3AyLnk7IAogICAgICAgIGlmKG9wMWRpZiA+PSBvcDJkaWYpIHJldHVybiBkcFtsXVtyXVt0XSA9IG9wMTsgCiAgICAgICAgZWxzZSByZXR1cm4gZHBbbF1bcl1bdF0gPSBvcDI7IAogICAgfQogICAgZWxzZSB7CiAgICAgICAgaW5mbyBvcDE7IAogICAgICAgIGluZm8gcmVzID0gc29sdmUobCxyLTEsMCk7IAogICAgICAgIG9wMS55ID0gYVtyXSArIHJlcy55OyAKICAgICAgICBvcDEueCA9IHJlcy54OyAKICAgICAgICBpbmZvIG9wMjsgCiAgICAgICAgaW5mbyByZXMyID0gc29sdmUobCsxLHIsMCk7IAogICAgICAgIG9wMi55ID0gYVtsXSArIHJlczIueTsgb3AyLnggPSByZXMyLng7IAogICAgICAgIGxsIG9wMWRpZiA9IG9wMS54IC0gb3AxLnk7IAogICAgICAgIGxsIG9wMmRpZiA9IG9wMi54IC0gb3AyLnk7IAogICAgICAgIGlmKG9wMWRpZiA8PSBvcDJkaWYpIHJldHVybiBkcFtsXVtyXVt0XSA9IG9wMTsgCiAgICAgICAgZWxzZSByZXR1cm4gZHBbbF1bcl1bdF0gPSBvcDI7IAogICAgfQp9CmludCBtYWluKCkgewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAogICAgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7IAogICAgbWVtc2V0KGRwLCAtMSwgc2l6ZW9mKGRwKSk7IAogICAgY2luPj5uOyAKICAgIGEucmVzaXplKG4pOyAKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbj4+YVtpXTsgCiAgICBpbmZvIGFucyA9IHNvbHZlKDAsbiAtIDEsIDApOyAKICAgIGNvdXQ8PGFucy54IC0gYW5zLnk8PGVuZGw7IAp9