#include <bits/stdc++.h>
#define int long long
using namespace std;
pair<int,int> operator+(const pair<int,int>& a,const pair<int,int>& b){
return {a.first+b.first,a.second+b.second};
}
pair<int,int> operator+(const pair<int,int>& a,const int& x){
return {a.first+x,a.second+x};
}
int n;
const int MAXN = 210;
int a[MAXN];
int sum[MAXN];
pair<int,int> dp[MAXN][MAXN];
pair<int,int> dfs(int l,int r){
if(l>r){
return {0,0};
}
if(l==r){
return {0,0};
}
if(l+1==r){
return {a[l]+a[r],a[l]+a[r]};
}
if(dp[l][r].first!=-1){
return dp[l][r];
}
int res1=INT_MAX;
int res2=0;
for(int k=l+1;k<r;k++){
pair<int,int> exp = dfs(l,k)+dfs(k+1,r)+(sum[r]-sum[l-1]);
res1 = min(res1,exp.first);
res2 = max(res2,exp.second);
}
dp[l][r]={res1,res2};
return dp[l][r];
}
inline void run(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i+n]=a[i];
}
for(int i=1;i<=2*n;i++){
sum[i]=sum[i-1]+a[i];
}
for(int i=0;i<=2*n;i++){
for(int j=0;j<=2*n;j++){
dp[i][j]={-1,-1};
}
}
int min_val=INT_MAX;
int max_val=0;
for(int i=1;i<=n;i++){
pair<int,int> ans = dfs(i,i+n-1);
min_val = min(min_val,ans.first);
max_val = max(max_val,ans.second);
}
cout<<min_val<<'\n'<<max_val;
return ;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T=1;
while(T--){
run();
}
return 0;
}