以sum/2为总容量的0-1背包
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int li[5010],dp[250005];
int main(){
int n;
while(cin>>n){
if(n<0)
break;
int num=0,sum=0;
for(int i=0;i<n;i++){
int a,b;
cin>>a>>b;
for(int k=0;k<b;k++){
li[num++]=a;
}
sum+=a*b;
}
memset(dp,0,sizeof(dp));
for(int i=0;i<num;i++){
for(int j=sum/2;j>=li[i];j--){
dp[j]=max(dp[j],dp[j-li[i]]+li[i]);
}
}
cout<<max(dp[sum/2],sum-dp[sum/2])<<" "<<min(dp[sum/2],sum-dp[sum/2])<<endl;
}
}