#include <fstream>
#define Nmax 1000
#define INF 99999999999999999
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
long long int Nrmin[Nmax][Nmax];
int N;
int D[Nmax];
void Citire();
void Dinamica();
void Afisare();
int main()
{
Citire();
Dinamica();
Afisare();
return 0;
}
void Citire()
{
int i;
fin>>N;
for (i=0; i<=N; i++)
fin>>D[i];
}
void Dinamica()
{
int i,j;
for (i=1; i<N; i++)
Nrmin[i][i+1]=D[i] * D[i-1]*D[i+1];
int k,z;
long long int minim,t;
for (z=3; z<=N; z++)
for (i=1; i<=N-z+1; i++)
{
j = i+z-1;
minim=INF;
for (k=i+1; k<=j; k++)
{
t=Nrmin[i][k-1]+Nrmin[k][j]+D[k-1]*D[i-1]*D[j];
if (minim>t)
minim=t;
}
Nrmin[i][j]=minim;
}
}
void Afisare()
{
fout<<Nrmin[1][N]<<'\n';
}