#include <bits/stdc++.h>
using namespace std;
const int N = 4e3 + 10;
int n;
int a[N], sum[N];
bool vis[N / 2][100][100];
int f[N / 2][100][100];
int dfs(int l, int r, bool pos, int k) {
  if (r - l + 1 < k) return 0;
  int ret;
  if (!pos) {
    int d = (n - r) - (l - 1);
    if (vis[l][d][k]) return f[l][d][k];
    vis[l][d][k] = true;
    ret = sum[l + k - 1] - sum[l - 1] + dfs(l + k, r, !pos, k);
    if (r - l + 1 > k) {
      int tmp = sum[l + k] - sum[l - 1] + dfs(l + k + 1, r, !pos, k + 1);
      ret = max(ret, tmp);
    }
    return f[l][d][k] = ret;
  } else {
    ret = -(sum[r] - sum[r - k]) + dfs(l, r - k, !pos, k);
    if (r - l + 1 > k) {
      int tmp = -(sum[r] - sum[r - k - 1]) + dfs(l, r - k - 1, !pos, k + 1);
      ret = min(ret, tmp);
    }
    return ret;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + a[i];
  printf("%d\n", dfs(1, n, 0, 1));
  return 0;
}
