#include<iostream> #include<vector> #include<algorithm> using namespace std; int N; int dp[1001]; main() { cin>>N; vector<pair<int,int> >A(N); vector<int>S(N); for(int i=0;i<N;i++) { cin>>A[i].first>>A[i].second; S[i]=A[i].second; } sort(A.begin(),A.end(),[](pair<int,int>l,pair<int,int>r){return l.first+l.second<r.first+r.second;}); for(int i=1;i<=N;i++)dp[i]=2e9; for(int i=0;i<N;i++) { for(int j=i;j>=0;j--)if(dp[j]<=A[i].second) { dp[j+1]=min(dp[j+1],dp[j]+A[i].first); } } int ans=N; while(dp[ans]==(int)2e9)ans--; cout<<ans<<endl; }