定义K为一个区间内最后一个被拿出的数字
//#include<bits/stdc++.h>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
const int volume=110;
int main()
{
///开启加速后,就不能cin,cout,scanf等混用
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin>>n;
int number[volume];
for(int i=0;i<n;i++)
cin>>number[i];
int dp[volume][volume];
for(int len=1;len<=n-2;len++)
for(int i=1,j=i+len-1;j<=n-2;i++,j++)
{
dp[i][j]=0x7fffffff;
if(i==j)
dp[i][j]=number[i]*number[i-1]*number[i+1];
else
for(int k=i;k<=j;k++)
{
if(k==i)
dp[i][j]=min(dp[i][j],dp[k+1][j]+number[k]*number[i-1]*number[j+1]);
else if(k==j)
dp[i][j]=min(dp[i][j],dp[i][k-1]+number[k]*number[i-1]*number[j+1]);
else
dp[i][j]=min(dp[i][j],dp[i][k-1]+number[k]*number[i-1]*number[j+1]+dp[k+1][j]);
}
}
cout<<dp[1][n-2]<<endl;
return 0;
}