//贪心
#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;
}