#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 500 + 5; //remember to modify the range of the data!!
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
typedef long long ll;
int n, m, t;
int a[N], f[N][N]; //第i堆到第j堆合并成一堆
int main(void)
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> f[i][i], f[i + n][i + n] = f[i][i];
for(int len = 2; len <= n; len++)
for(int l = 1; l <= n * 2; l++)
{
int r = l + len - 1;
for(int k = l; k <= r && r <= n * 2; k++)
f[l][r] = max(f[l][k] + f[k + 1][r], f[l][r]);
}
int ans = 0;
for(int i = 1; i <= n; i++)
ans = max(ans, f[i][i + n - 1]);
cout << ans;
return 0;
}