int weight[101],a[101][201],b[101][201],sum[201];
int dpc(int start,int last)
{
if(start==last)
return 0;
if(start+1==last)
{
a[start][last]=weight[start]+weight[last];
return a[start][last];
}
if(a[start][last]!=0)
return a[start][last];
int answer=0,i;
for(i=start;i<last;i++)
if( dpc(start,i)+dpc(i+1,last) > answer )
answer=dpc(start,i)+dpc(i+1,last);
a[start][last]=answer+sum[last]-sum[start-1];
return a[start][last];
}
int dpz(int start,int last)
{
if(start==last)
return 0;
if(start+1==last)
{
b[start][last]=weight[start]+weight[last];
return b[start][last];
}
if(b[start][last]!=0)
return b[start][last];
int answer=9999999,i;
for(i=start;i<last;i++)
if( dpz(start,i)+dpz(i+1,last) < answer )
answer=dpz(start,i)+dpz(i+1,last);
b[start][last]=answer+sum[last]-sum[start-1];
return b[start][last];
}
int main()
{
int n,i,ans_a=0,ans_b=9999999;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&weight[i]);
weight[n+i]=weight[i];
}
sum[1]=weight[1];
for(i=2;i<=2*n;i++)
sum[i]=sum[i-1]+weight[i];
for(i=1;i<=n;i++)
if(ans_a<dpc(i,i+n-1))
ans_a=dpc(i,i+n-1);
for(i=1;i<=n;i++)
if(ans_b>dpz(i,i+n-1))
ans_b=dpz(i,i+n-1);
printf("%d\n%d",ans_b,ans_a);
//for(;;);
return 0;
}