/*
先断环为链,然后就是区间dp的典型例题。
f[i][j]表示合并i到j这段区间的最大值,然后枚举k这条分割线就好了。
注意循环的边界。
最后不要忘记答案取max。
*/
#include<iostream>
#include<cstdio>
#define maxn 1001
using namespace std;
int f[maxn][maxn],s[maxn];
int main()
{
int n,ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
s[i+n]=s[i];
}
for(int i=2*n-1;i>0;i--)
for(int j=i+1;j<=2*n&&j-i<n;j++)
for(int k=i;k<j;k++)
{
f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+s[i]*s[k+1]*s[j+1]);
ans=max(ans,f[i][j]);
}
printf("%d\n",ans);
return 0;
}