
Code
import sys
input = sys.stdin.readline
n = int(input())
datas = []
dp = [[-1] * (n+1) for _ in range(n+1)]
datas.append([0,0])
for _ in range(n):
datas.append(list(map(int,input().split())))
def mat_chain(s, e):
result = sys.maxsize
if dp[s][e] != -1:
return dp[s][e]
if s == e:
return 0
if s + 1 == e:
return datas[s][0] * datas[s][1] * datas[e][1]
for i in range(s,e):
a = datas[s][0] * datas[i][1] * datas[e][1]
result = min(result, a + mat_chain(s,i) + mat_chain(i+1, e))
dp[s][e] = result
return dp[s][e]
print(mat_chain(1, n))