#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> cards(n);
for (int i = 0; i < n; i++) cin >> cards[i];
vector<vector<int>> dp(n, vector<int>(n, 0));
for (int i = 0; i < n; i++) dp[i][i] = cards[i];
for (int len = 2; len <= n; len++) {
for (int i = 0; i + len - 1 < n; i++) {
int j = i + len - 1;
dp[i][j] = max(cards[i] - dp[i + 1][j], cards[j] - dp[i][j - 1]);
}
}
cout << dp[0][n - 1] << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBjYXJkcyhuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gY2FyZHNbaV07CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBkcChuLCB2ZWN0b3I8aW50PihuLCAwKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgZHBbaV1baV0gPSBjYXJkc1tpXTsKCiAgICBmb3IgKGludCBsZW4gPSAyOyBsZW4gPD0gbjsgbGVuKyspIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSArIGxlbiAtIDEgPCBuOyBpKyspIHsKICAgICAgICAgICAgaW50IGogPSBpICsgbGVuIC0gMTsKICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoY2FyZHNbaV0gLSBkcFtpICsgMV1bal0sIGNhcmRzW2pdIC0gZHBbaV1baiAtIDFdKTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBkcFswXVtuIC0gMV0gPDwgZW5kbDsKICAgcmV0dXJuIDA7Cn0KCgogICAg