#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fo(a,b,c) for(int a=b;a<=c;a++)
#define of(a,b,c) for(int a=b;a>=c;a--)
const int N=110;
const int MAXN=0x7f7f7f7f7f7f7f7f;
const int MINN=-MAXN;
int a[N];
int before_sum[N];
int dp_min[N][N];
int dp_max[N][N];
int before_init(int i,int j,int before_sum[]){
int res=before_sum[j]-before_sum[i];
return res;
}
inline int read(){
int s=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=s*10+ch-'0';
ch=getchar();
}
return s*f;
}
signed main(){
int n;
n=read();
fo(i,1,n){
a[i]=read();
a[i+n]=a[i];
}
int round_n=(n<<1)-1;
fo(i,1,round_n){
before_sum[i]=before_sum[i-1]+a[i];
}
int last_min=MAXN;
int last_max=MINN;
fo(i,2,n){
int ans_j=round_n-i+2;
fo(j,1,ans_j){
int len=j+i-1;
int minn=MAXN;
int maxn=MINN;
fo(k,j,len-1){
int ans_min=dp_min[j][k]+dp_min[k+1][len];
if(ans_min<minn){
minn=ans_min;
}
if(dp_min[j][len]<minn){
minn=dp_min[j][len];
}
int ans_max=dp_max[j][k]+dp_max[k+1][len];
if(ans_max>maxn){
maxn=ans_max;
}
if(dp_max[j][len]>maxn){
maxn=dp_max[j][len];
}
}
dp_min[j][len]=minn;
dp_max[j][len]=maxn;
int res=before_init(j-1,len,before_sum);
dp_min[j][len]+=res;
dp_max[j][len]+=res;
if(dp_min[j][len]<last_min){
last_min=dp_min[j][len];
}
if(dp_max[j][len]>last_max){
last_max=dp_max[j][len];
}
}
}
cout<<last_min<<endl;
cout<<last_max<<endl;
return 0;
}