#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 5e3 + 5;
int n;
int a[N];
ll dp[N][N]; // dp[l][r] = Chênh lệch điểm số tối đa mà người đi trước có thể đạt được khi chơi trên đoạn [l, r]
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int l = n; l >= 1; l--) {
for (int r = l; r <= n; r++) {
if (l == r) {
dp[l][r] = a[l];
continue;
}
dp[l][r] = max(a[l] - dp[l + 1][r], a[r] - dp[l][r - 1]);
}
}
ll tot = 0;
for (int i = 1; i <= n; i++) tot += a[i];
// Có p1 + p2 = tot
// và p1 - p2 = dp[1][n]
// => 2 * p1 = tot + dp[1][n]
ll p1 = (tot + dp[1][n]) / 2; // Điểm số của người chơi thứ nhất
cout << p1 << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSA1ZTMgKyA1OyAKCmludCBuOyAgCmludCBhW05dOyAKCmxsIGRwW05dW05dOyAvLyBkcFtsXVtyXSA9IENow6puaCBs4buHY2ggxJFp4buDbSBz4buRIHThu5FpIMSRYSBtw6AgbmfGsOG7nWkgxJFpIHRyxrDhu5tjIGPDsyB0aOG7gyDEkeG6oXQgxJHGsOG7o2Mga2hpIGNoxqFpIHRyw6puIMSRb+G6oW4gW2wsIHJdCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbjsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOyAKCQoJZm9yIChpbnQgbCA9IG47IGwgPj0gMTsgbC0tKSB7CgkJZm9yIChpbnQgciA9IGw7IHIgPD0gbjsgcisrKSB7CgkJCWlmIChsID09IHIpIHsKCQkJCWRwW2xdW3JdID0gYVtsXTsgCgkJCQljb250aW51ZTsgCgkJCX0KCQkJZHBbbF1bcl0gPSBtYXgoYVtsXSAtIGRwW2wgKyAxXVtyXSwgYVtyXSAtIGRwW2xdW3IgLSAxXSk7CgkJfQoJfQoKCWxsIHRvdCA9IDA7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgdG90ICs9IGFbaV07IAoJCQoJLy8gQ8OzIHAxICsgcDIgPSB0b3QKCS8vIHbDoCBwMSAtIHAyID0gZHBbMV1bbl0KCS8vID0+ICAyICogcDEgPSB0b3QgKyBkcFsxXVtuXQoJbGwgcDEgPSAodG90ICsgZHBbMV1bbl0pIC8gMjsgLy8gxJBp4buDbSBz4buRIGPhu6dhIG5nxrDhu51pIGNoxqFpIHRo4bupIG5o4bqldAoKCWNvdXQgPDwgcDEgPDwgJ1xuJzsgCn0=