#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstdlib>
using namespace std;
const int N = 210;
int n;
int a[N]; //a[i]表示第i颗珠子的能量值
int f[N][N]; //f[l][r]表示合并[l,r]范围内珠子获得的最大的能量值
int main(int argc, char const *argv[])
{
//处理输入
cin >> n; //珠子的数量
for (int i = 1; i <= n; i++)
{
cin >> a[i];
a[i + n] = a[i]; //复制一遍区间,环形链表拍平,处理成线性
}
for (int len = 3; len <= n + 1; len++)
{
for (int l = 1; l + len - 1 <= 2 * n; l++)
{
int r = l + len - 1;
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]);
}
}
}
int res = 0;
for (int i = 1; i <= n; i++)
{
res = max(res, f[i][i + n]);
}
cout << res << endl;
return 0;
}