#include<iostream>
#include<stdio.h>
#include<cmath>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<vector>
#include<map>
#define oo 0x3f3f3f3f
#define OO 0x3f3f3f3f3f3f3f3f
#define LL long long
#define res register int
#define STP system("pause")
using namespace std;
const int N=2e5;
struct NODE{
LL l,dt;
bool operator<(const NODE &v) const {
if(l<v.l) return true;
else return false;
}
}node[N+5];
priority_queue<NODE> q;
int cmp(NODE x, NODE y) {
if (x.dt!=y.dt) return x.dt<y.dt;
else if(x.dt==y.dt) return x.l<y.l;
}
int main(){
std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
cin>>node[i].l>>node[i].dt;
}
sort(node+1,node+n+1,cmp);
LL ddl=0,nw=0;
for(int i=1;i<=n;++i){
if(node[i].dt>ddl) ddl=node[i].dt;
if(ddl-nw>=node[i].l){
q.push(node[i]);
nw+=node[i].l;
}
else if(node[i].l<q.top().l){
nw+=(node[i].l-q.top().l);
q.pop();
q.push(node[i]);
}
}
cout<<q.size()<<'\n';
return 0;
}