#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,a[301],sum[301][301]={0},f_min[301][301]={0},f_max[301][301]={0};
void init();
void work();
int my_min(int,int);
int my_max(int,int);
int main()
{
//freopen("stone5.in","r",stdin);
//freopen("stone5.out","w",stdout);
init();
work();
return 0;
}
void init()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<n;i++)
{
int tot=a[i];
for(int j=i+1;j<=n;j++)
{
tot+=a[j];
sum[i][j]=tot;
}
}
}
void work()
{
for(int d=2;d<=n;d++)
{
for(int i=1;i<=n-d+1;i++)
{
int j=i+d-1;
f_min[i][j]=0x7fffffff/2;
for(int k=i;k<j;k++)
{
f_max[i][j]=my_max(f_max[i][j],f_max[i][k]+f_max[k+1][j]);
f_min[i][j]=my_min(f_min[i][j],f_min[i][k]+f_min[k+1][j]);
}
f_max[i][j]+=sum[i][j];
f_min[i][j]+=sum[i][j];
}
}
cout<<f_min[1][n]<<endl;
cout<<f_max[1][n]<<endl;
}
int my_min(int x,int y)
{
if(x<y)return x;
else return y;
}
int my_max(int x,int y)
{
if(x>y)return x;
else return y;
}
/**************************************************************
Problem: 2116
User: admin
Language: C++
Result: Accepted
Time:27 ms
Memory:3140 kb
****************************************************************/