#include <bits/stdc++.h>
using namespace std;
long long const maxn = 4005;
long long n, sum[maxn], f[30000005];
inline long long fuck(long long l, long long r, long long k, long long who) {
  return (((l * 4000 + r) * 100 + k) * 2 + who) % 29999999;
}
long long dfs(long long l, long long r, long long k, long long who) {
  if (r - l + 1 < k) return 0;
  if (r - l + 1 == k)
    return who ? (-sum[r] + sum[l - 1]) : (sum[r] - sum[l - 1]);
  if (~f[fuck(l, r, k, who)]) return f[fuck(l, r, k, who)];
  if (who) {
    long long res = dfs(l, r - k, k, 0) - sum[r] + sum[r - k];
    if (l <= r - k)
      res = min(res, dfs(l, r - k - 1, k + 1, 0) - sum[r] + sum[r - k - 1]);
    return f[fuck(l, r, k, who)] = res;
  } else {
    long long res = dfs(l + k, r, k, 1) + sum[l + k - 1] - sum[l - 1];
    if (l + k <= r)
      res = max(res, dfs(l + k + 1, r, k + 1, 1) + sum[l + k] - sum[l - 1]);
    return f[fuck(l, r, k, who)] = res;
  }
}
signed main() {
  cin >> n;
  for (long long i = 1; i <= n; i++) {
    long long a;
    cin >> a;
    sum[i] = sum[i - 1] + a;
  }
  memset(f, -1, sizeof(f));
  cout << dfs(1, n, 1, 0) << endl;
  return 0;
}
