#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
****************************************************************/