#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("podm.in");
ofstream g ("podm.out");
const long long INF = 1LL << 60;
const int NMAX = 500 + 1;
int n;
long long dim[NMAX + 1];
long long dp[NMAX][NMAX];
void citeste() {
f >> n;
for (int i = 1; i <= n + 1; i++)
f >> dim[i];
}
void rezolva() {
for (int l = 2; l <= n; l++) {
for (int i = 1; i <= n - l + 1; i++) {
int j = i + l - 1;
dp[i][j] = INF;
for (int k = i; k < j; k++)
dp[i][j] = min(
dp[i][j],
dp[i][k] + dp[k + 1][j] + 1LL * dim[i] * dim[k + 1] * dim[j + 1]
);
}
}
}
void scrie() {
g << dp[1][n] << '\n';
}
int main() {
citeste();
rezolva();
scrie();
return 0;
}