#include <bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<=r;++i)
using namespace std;
int a[301],n,sum[301];
int mem1[301][301],mem2[301][301];
const int INF=1<<30;
int dfs1(int l,int r){
if(mem1[l][r]!=-1)
return mem1[l][r];
if(l==r)
return 0;
int ans=INF;
rep(k,l,r-1)
ans=min(ans,dfs1(l,k)+dfs1(k+1,r)+sum[r]-sum[l-1]);
return mem1[l][r]=ans;
}
int dfs2(int l,int r){
if(mem2[l][r]!=-1)
return mem2[l][r];
if(l==r)
return 0;
int ans=0;
rep(k,l,r-1)
ans=max(ans,dfs2(l,k)+dfs2(k+1,r)+sum[r]-sum[l-1]);
return mem2[l][r]=ans;
}
int main(){
ios::sync_with_stdio(false);
memset(mem1,-1,sizeof(mem1));
memset(mem2,-1,sizeof(mem2));
cin>>n;
rep(i,1,n){
cin>>a[i];
a[i+n]=a[i];
}
rep(i,1,2*n)
sum[i]=sum[i-1]+a[i];
int minn=INF,maxn=0;
rep(i,1,n){
minn=min(dfs1(i,i+n-1),minn);
maxn=max(dfs2(i,i+n-1),maxn);
}
cout<<minn<<endl<<maxn;
}