import java.util.Scanner;
public class MatrixChainMultiplicationMax {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] dims = new int[n + 1];
for (int i = 0; i < n; i++) {
int row = scanner.nextInt();
int col = scanner.nextInt();
if (i == 0) {
dims[i] = row;
}
dims[i + 1] = col;
}
int maxCost = maxMatrixChainCost(dims, 0, n - 1);
System.out.println(maxCost);
}
private static int maxMatrixChainCost(int[] dims, int i, int j) {
// 单个矩阵,乘法次数为0
if (i == j) {
return 0;
}
int max = Integer.MIN_VALUE;
// 尝试所有可能的分割点
for (int k = i; k < j; k++) {
int leftMax = maxMatrixChainCost(dims, i, k);
int rightMax = maxMatrixChainCost(dims, k + 1, j);
int cost = leftMax + rightMax + dims[i] * dims[k + 1] * dims[j + 1];
if (cost > max) {
max = cost;
}
}
return max;
}
}