#include<bits/stdc++.h>
using namespace std;
int dp1[30][30],dp2[30][30],sum[1010],n,a[100],ans_min=0x3f3f3f3f,ans_max=0;
inline int dfs1(int x, int y){
if(dp1[x][y]) return dp1[x][y];
if(x == y) return 0;
int ans = 0;
for(int i=x;i<=y - 1;i++)
ans = max(ans, dfs1(x, i) + dfs1(i + 1, y) + sum[y] - sum[x - 1]);
return dp1[x][y] = ans;
}
inline int dfs2(int x, int y){
if(dp2[x][y]) return dp2[x][y];
if(x == y) return 0;
int ans = 0x3f3f3f;
for(int i=x;i<=y - 1;i++)
ans = min(ans, dfs2(x, i) + dfs2(i + 1, y) + sum[y] - sum[x - 1]);
return dp2[x][y] = ans;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i+n]=a[i];
}
for(int i=1;i<=n*2;i++)
{
sum[i]=sum[i-1]+a[i];
}
for(int i=1;i<=n;i++){
ans_max=max(dfs1(i,i+n-1),ans_max);
ans_min=min(dfs2(i,i+n-1),ans_min);
}
cout<<ans_min<<endl<<ans_max;
return 0;
}