- #include<cstdio>
 - #define INF (1<<30) 
 - int dp[5000][5000]={},K[5000][5000]={},n,a[5000]={},sum[5000]={};
 - int main()
 - {
 -     scanf("%d",&n);
 -     for (int i=1;i<=n;i++)
 -     {
 -         scanf("%d",&a[i]);
 -         sum[i]=sum[i-1]+a[i];
 -         K[i][i]=i;
 -     }
 -     for (int len=2;len<=n;len++)
 -         for (int i=1;i<=n-len+1;i++)
 -         {
 -             int j=i+len-1;
 -             dp[i][j]=INF;
 -             for (int k=K[i][j-1];k<=K[i+1][j];k++)
 -                 if (dp[i][k-1]+dp[k][j]+sum[j]-sum[i-1]<dp[i][j])
 -                 {
 -                     dp[i][j]=dp[i][k-1]+dp[k][j]+sum[j]-sum[i-1];
 -                     K[i][j]=k;
 -                 }
 -         }
 -     printf("%d",dp[1][n]);
 -     return 0;
 - }