#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5,M=2e4+5;
int n,all,alla,f[M],a[N],b[N];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d",&a[i],&b[i]);
all+=a[i]+b[i];
alla+=a[i];
}
memset(f,-1,sizeof(f));
f[alla]=0;
for(int i=1;i<=n;i++)
for(int j=all;j>=0;j--)
if(j-b[i]+a[i]>=0&&f[j-b[i]+a[i]]>=0)
{
if(f[j]>=0)
{
f[j]=min(f[j],f[j-b[i]+a[i]]+1);
}
else
{
f[j]=f[j-b[i]+a[i]]+1;
}
}
if(all%2==0)
{
for(int i=0;i<=all;i+=2)
if(f[(all-i)/2]>=0||f[(all+i)/2]>=0)
{
int ans=1e9;
if(f[(all-i)/2]>=0) ans=f[(all-i)/2];
if(f[(all+i)/2]>=0) ans=min(ans,f[(all+i)/2]);
printf("%d",ans);
return 0;
}
}
else
{
for(int i=1;i<=all;i+=2)
if(f[(all-i)/2]>=0||f[(all+i)/2]>=0)
{
int ans=1e9;
if(f[(all-i)/2]>=0) ans=f[(all-i)/2];
if(f[(all+i)/2]>=0) ans=min(ans,f[(all+i)/2]);
printf("%d",ans);
return 0;
}
}
}