using namespace std;
int head[205], tail[205], f[205][205] = { 0 };
int main()
{
int ans = 0, n, i, t, j, k;
cin >> n;
for (i = 1; i <= n; i++)
{
cin >> head[i];
head[i + n] = head[i];
}
for (i = 1; i <= 2 * n - 1; i++) tail[i] = head[i + 1];
tail[2 * n] = head[1];
for (i = 1; i <= 2 * n - 1; i++) f[i][i] = 0;//想知道这里为什么i不是遍历到2*n
for (t = 1; t <= n - 1; t++)//这里t区间长度吗,为什么不从2开始然后遍历到n
{
for (i = 1; i <= 2 * n - t; i++)//这里i是起始点 为什么不是i+t-1<2*n;
{
j = i + t;
for (k = i; k <= j - 1; k++)
{
f[i][j] = max(f[i][j], f[i][k] + f[k + 1][j] + head[i] * tail[k] * tail[j]);
}
}
}
for (i = 1; i <= n; i++) ans = max(ans, f[i][i + n - 1]);
cout << ans << endl;
return 0;
}