//贪心
#include <bits/stdc++.h>
#define maxn 0x3f3f3f3f
using namespace std;
typedef long long ll;
priority_queue<int, vector<int >, less<int > > q; //建大根堆
struct jian
{
ll tt,d;//定义耗时和截止时间
}t[200000];
bool cmp(jian a,jian b) // 假先修截止时间早的
{
if(a.d!=b.d) return a.d<b.d;
else return a.tt<b.tt;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;
ll sum=0; // 定义总耗时
cin>>n;
for(int i=1;i<=n;i++)
cin>>t[i].tt>>t[i].d;
sort(t+1,t+1+n,cmp);
for(int i=1;i<=n;i++)
{
sum+=t[i].tt;
q.push(t[i].tt);
if( sum >t[i].d) // 如果时间不够了,去掉耗时最大的
{
sum-=q.top();
q.pop();
}
}
cout<<q.size()<<endl;
}