#include<iostream>
using namespace std;
//存放欲计算的数据(的数组)
int n[100];
//统计数组从下标i到下标j的数值和
int nums(int i,int j)
{
int num=0;
do
{
num+=n[i++];
}while(i<=j);
return num;
}
int main()
{
int con;
int i,j,k,temp;
int m[100][100];
//输入数据
cin>>con;
for(i=0;i<con;i++)
cin>>n[i];
for(i=con-1;i>=0;i--)
{
for(j=i;j<con;j++)
{
if(i==j) m[i][j]=0;
else if(i+1==j) m[i][j]=nums(i,j);
else
{
m[i][j]=2000000000; // 代表无限大的数
for(k=i;k<j;k++) // 比较 从哪里分成两段比较好
{
temp=m[i][k]+m[k+1][j]+nums(i,j);
if(temp<m[i][j]) m[i][j]=temp;
}
}
}
}
cout<<m[0][con-1]<<endl;
return 0;
}