#include <bits/stdc++.h>
using i64 = long long;
const i64 INF = 1e18;
void solve()
{
int n;
std::cin >> n;
n++;
std::vector<int> a(n);
for (auto &c : a) {
std::cin >> c;
}
std::vector<std::vector<i64>> dp(n, std::vector<i64>(n, INF));
for (int r = 1; r < n; r++) {
dp[r - 1][r] = 0;
for (int l = r - 2; l >= 0; l--) {
for (int mid = l + 1; mid < r; mid++) {
dp[l][r] = std::min(dp[l][r], dp[l][mid] + dp[mid][r] + 1LL * a[l] * a[mid] * a[r]);
}
}
}
std::cout << dp[0][n - 1] << '\n';
}
signed main(void)
{
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int tt = 1;
while (tt--) {
solve();
}
}