190 200
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int a[103],f[45000][103];
int num[45000];
int i,j,n,m,ans,k;
int main()
{
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&a[i]),m+=a[i];
f[0][0]=1;
for (i=1;i<=n;i++)
for (j=m;j>=a[i];j--)
for (k=1;k<=i;k++)
{
if (f[j-a[i]][k-1]==1||f[j][k]==1)
f[j][k]=1;
}
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
if (f[i][j]==1&&abs((n-j)-j)<=1)
{
if (abs(m/2-ans)>abs(m/2-i))
ans=i;
}
int ano=m-ans;
printf("%d %d\n",min(ans,ano),max(ans,ano));
return 0;
}//有点类似于背包可行性问题