#include bits/stdc++.h>
using namespace std;
const int MAXN = 300;
int stones[MAXN];
int prefixSum[MAXN];
int dp[MAXN][MAXN];
int main() {
int N;
cin >> N;
for (int i = 1; i <= N; ++i) {
cin >> stones[i];
}
prefixSum[0] = 0;
for (int i = 1; i <= N; ++i) {
prefixSum[i] = prefixSum[i - 1] + stones[i];
}
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
dp[i][j] = (i == j) ? 0 : INT_MAX;
}
}
for (int length = 2; length <= N; ++length) {
for (int i = 1; i + length - 1 <= N; ++i) {
int j = i + length - 1;
for (int k = i; k < j; ++k) {
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + prefixSum[j] - prefixSum[i - 1]);
}
}
}
cout << dp[1][N] << endl;
return 0;
}