#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 5e3 + 5;
template<typename T>
bool minimize(T& a, const T& b) {
if (b < a) {a = b; return true;}
return false;
}
int n;
int a[N];
ll pref[N];
ll getSum(int l, int r) {
return pref[r] - pref[l - 1];
}
ll dp[N][N]; // dp[l][r] = Chi phí ít nhất để gộp các phần tử trong đoạn [l, r] về thành 1 phần tử duy nhất
int opt[N][N]; // opt[l][r] = Điểm k (điểm cắt) tối ưu cho dp[l][r]
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
pref[i] = pref[i - 1] + a[i];
}
for (int l = 1; l <= n; l++) {
for (int r = l; r <= n; r++) {
dp[l][r] = LINF;
opt[l][r] = -1;
}
}
for (int l = 1; l <= n; l++) {
dp[l][l] = 0;
opt[l][l] = l;
}
for (int l = n; l >= 1; l--) {
for (int r = l + 1; r <= n; r++) {
for (int k = opt[l][r - 1]; k <= opt[l + 1][r]; k++) {
ll cost = getSum(l, r);
if (minimize(dp[l][r], dp[l][k] + dp[k + 1][r] + cost)) {
opt[l][r] = k;
}
}
}
}
cout << dp[1][n] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSA1ZTMgKyA1OyAKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmJvb2wgbWluaW1pemUoVCYgYSwgY29uc3QgVCYgYikgewoJaWYgKGIgPCBhKSB7YSA9IGI7IHJldHVybiB0cnVlO30gCglyZXR1cm4gZmFsc2U7Cn0KCmludCBuOyAKaW50IGFbTl07IApsbCBwcmVmW05dOwoKbGwgZ2V0U3VtKGludCBsLCBpbnQgcikgewoJcmV0dXJuIHByZWZbcl0gLSBwcmVmW2wgLSAxXTsgCn0KCmxsIGRwW05dW05dOyAvLyBkcFtsXVtyXSA9IENoaSBwaMOtIMOtdCBuaOG6pXQgxJHhu4MgZ+G7mXAgY8OhYyBwaOG6p24gdOG7rSB0cm9uZyDEkW/huqFuIFtsLCByXSB24buBIHRow6BuaCAxIHBo4bqnbiB04butIGR1eSBuaOG6pXQKaW50IG9wdFtOXVtOXTsgLy8gb3B0W2xdW3JdID0gxJBp4buDbSBrICjEkWnhu4NtIGPhuq90KSB04buRaSDGsHUgY2hvIGRwW2xdW3JdCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbjsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNpbiA+PiBhW2ldOyAKCQlwcmVmW2ldID0gcHJlZltpIC0gMV0gKyBhW2ldOyAKCX0KCglmb3IgKGludCBsID0gMTsgbCA8PSBuOyBsKyspIHsKCQlmb3IgKGludCByID0gbDsgciA8PSBuOyByKyspIHsKCQkJZHBbbF1bcl0gPSBMSU5GOyAKCQkJb3B0W2xdW3JdID0gLTE7IAoJCX0KCX0KCglmb3IgKGludCBsID0gMTsgbCA8PSBuOyBsKyspIHsKCQlkcFtsXVtsXSA9IDA7ICAKCQlvcHRbbF1bbF0gPSBsOyAgCgl9CgoJZm9yIChpbnQgbCA9IG47IGwgPj0gMTsgbC0tKSB7CgkJZm9yIChpbnQgciA9IGwgKyAxOyByIDw9IG47IHIrKykgewoJCQlmb3IgKGludCBrID0gb3B0W2xdW3IgLSAxXTsgayA8PSBvcHRbbCArIDFdW3JdOyBrKyspIHsKCQkJCWxsIGNvc3QgPSBnZXRTdW0obCwgcik7IAoJCQkJaWYgKG1pbmltaXplKGRwW2xdW3JdLCBkcFtsXVtrXSArIGRwW2sgKyAxXVtyXSArIGNvc3QpKSB7CgkJCQkJb3B0W2xdW3JdID0gazsgCgkJCQl9CgkJCX0KCQl9Cgl9CgoJY291dCA8PCBkcFsxXVtuXSA8PCAnXG4nOyAKfQ==