rt
#include<iostream>
#include<cmath>
using namespace std;
int dp[1000+10][6000+10] = {99999};
int v[1000+10], w[1000+10];
bool flag[1000+10][6000+10] = {false};
int main()
{
int n;
cin>>n;
long long cnt = 0;
for(int i = 1; i <= n; i++)
{
int a,b;
cin>>a>>b;
v[i] = abs(a-b)*2;
if(a<b)
{
w[i] = 0;
v[i] = (b-a)*2;
}
else
{
w[i] = -2;
v[i] = (a-b)*2;
}
cnt += v[i];
}
flag[0][cnt] = true;
for(int i = 1; i <= n; i++)
{
for(int j = 0; j <= 6000+10; j++)
{
dp[i][j] = 999999;
if(flag[i-1][j]) dp[i][j] = min(dp[i][j], dp[i-1][j] + w[i]);
if(flag[i-1][j+v[i]]) dp[i][j] = min(dp[i][j], dp[i-1][j+v[i]] + 1 + w[i]);
if(dp[i][j] != 99999) flag[i][j] = true;
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 0; j <= 10; j++)
{
cout<<dp[i][j]<<" ";
}
cout<<endl;
}
for(int i = 0; i <= n; i++)
{
if(flag[n][i]){
cout<<dp[n][i]<<endl; return 0;
}
}
return 0;
}