#include<bits/stdc++.h>
using namespace std;
const int N=205;
template<typename T>
inline void read(T &x){
x=0; bool f=0;char ch=getchar();
while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
x=f?-x:x;
}
template<typename T>
inline void print(T x){
if(x<0) x=-x,putchar('-');
if(x>9) print(x/10);
putchar(x%10+'0');
}
int a[N],dp1[N][N],dp2[N][N],sum[N];
int n,minn=0x7fffffff,maxn=0;
int main(){
read(n);
for(int i=1;i<=n;i++) read(a[i]),a[i+n]=a[i];
for(int i=1;i<=2*n;i++) sum[i]=sum[i-1]+a[i];
memset(dp1,0x3f,sizeof(dp1));
// cout<<dp1[0][0];
for(int i=1;i<=n;i++) dp1[i][i]=0;
for(int len=2;len<=n;len++)
for(int i=1;i<=2*n-len+1;i++){
int j=i+len-1;
for(int k=i;k<j;k++){
dp1[i][j]=min(dp1[i][j],dp1[i][k]+dp1[k+1][j]+sum[j]-sum[i-1]);
dp2[i][j]=max(dp2[i][j],dp2[i][k]+dp2[k+1][j]+sum[j]-sum[i-1]);
}
}
for(int i=1;i<=n;i++) minn=min(minn,dp1[i][i+n-1]),maxn=max(maxn,dp2[i][i+n-1]);
print(minn),puts(""),print(maxn);
return 0;
}