#include<bits/stdc++.h> using namespace std; int sum[805],dp[805][805];int n; int dp_min(){ int ans=INT_MAX; //memset(dp,0x3f,sizeof(dp)); for(int i=1;i<=n;i++) dp[i][i]=0; for(int j=1;j<=2*n;j++){ for(int i=j-1;i>=1;i--){ dp[i][j]=0x3f3f3f3f; for(int k=i;k<j;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]); } } for(int i=1;i<=n;i++){ ans=min(ans,dp[i+1][i+n]); //cout<<ans<<endl; } return ans; } int dp_max(){ int ans=INT_MIN; memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) dp[i][i]=0; for(int j=1;j<=2*n;j++){ for(int i=j-1;i>=1;i--){ dp[i][j]=-0x3f3f3f3f; for(int k=i;k<j;k++) dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]); } } for(int i=1;i<=n;i++){ ans=max(ans,dp[i+1][i+n]); //cout<<ans<<endl; } return ans; } int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>sum[i],sum[i+n]=sum[i]; for(int i=1;i<=2*n;i++) sum[i]+=sum[i-1]; printf("%d\n",dp_min()); printf("%d",dp_max()); return 0; } /************************************************************** Problem: 2058 User: liangshinan Language: C++ Result: Accepted Time:806 ms Memory:4612 kb ****************************************************************/