#include<iostream>
using namespace std;
const int N=1002;
int n;
int dp[N][N];
int s[N];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]=s[i]+s[i-1];
}
//数据预处理(设置前缀和数组)
for(int len=2;len<=n;len++){
for(int i=1;i+len-1<=n;i++){
int j=i+len-1;
dp[i][j]=1e9;
for(int k=i;k<=j-1;k++){
dp[i][j]=min(dp[i][k]+dp[k+1][j]+s[j]-s[i-1],dp[i][j]);
}
}
}
cout<<dp[1][n]<<endl;
for(int len=2;len<=n;len++){
for(int i=1;i+len-1<=n;i++){
int j=i+len-1;
dp[i][j]=0;
for(int k=i;k<=j-1;k++){
dp[i][j]=max(dp[i][k]+dp[k+1][j]+s[j]-s[i-1],dp[i][j]);
}
}
}
cout<<dp[1][n]<<endl;
return 0;
}