#include <stdio.h>
#define N 500
const long long INF = 1LL << 60;
int d[N+1];
long long nr[N+1][N+1];
long long min(long long x, long long y) {
return (x < y ? x : y);
}
int main(void) {
FILE *fin = fopen("podm.in", "r");
int n;
fscanf(fin, "%d", &n);
for (int i = 0; i <= n; i++) {
fscanf(fin, "%d", &d[i]);
}
fclose(fin);
for (int i = n - 1; i >= 1; i--) {
for (int j = i + 1; j <= n; j++) {
nr[i][j] = INF;
for (int k = i; k < j; k++) {
long long rez_k = nr[i][k] + nr[k+1][j] + (long long)d[i-1] * d[j] * d[k];
nr[i][j] = min(nr[i][j], rez_k);
}
}
}
FILE *fout = fopen("podm.out", "w");
fprintf(fout, "%lld\n", nr[1][n]);
fclose(fout);
return 0;
}