#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=230;
int a[N];
LL f[N][N];//将所有第i堆到第j堆合并为1堆,合并的区间长度至少2
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>a[i];
a[i+n]=a[i];//将环形转化为链形
}
for(int len=2;len<n+1;++len)//区间长度至少从2开始,且区间长度最大为n
{
for(int i=1;i+len<=2*n;++i)
{
int l=i,r=i+len;
for(int k=l+1;k<r;++k)//枚举分界点
{
f[l][r]=max(f[l][r],f[l][k]+f[k][r]+a[l]*a[k]*a[r]);
}
}
}
LL res=0;
for(int i=1;i<=n;++i) res=max(res,f[i][n+i]);
cout<<res;
return 0;
}