#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define int long long
const int N=410;
int f[N][N];
int n;
int res;
signed main()
{
scanf("%lld",&n);
for(int i=0;i<=n+1;i++)
{
for(int j=0;j<=n+1;j++)f[i][j]=-1;
}
for(int i=1;i<=n;i++)scanf("%lld",&f[i][i]),res=max(res,f[i][i]);
for(int len=2;len<=n;len++)
{
for(int l=1;l+len-1<=n;l++)
{
int r=l+len-1;
for(int k=l;k<r;k++)
{
if(f[l][k]==f[k+1][r]&&f[l][k]!=-1)f[l][r]=max(f[l][r],f[l][k]+f[k+1][r]);
for(int t=k+1;t<r;t++)
{
if(f[l][k]==f[t+1][r]&&f[l][k]!=-1&&f[k+1][t]!=-1)
{
f[l][r]=max(f[l][r],f[l][k]+f[k+1][t]+f[t+1][r]);
break;
}
}
}
res=max(res,f[l][r]);
}
}
printf("%lld\n",res);
return 0;
}