N=int(input()) F=[] for _ in range(N): w,s=map(int,input().split()) F.append((w,s)) F.sort(key=lambda x:sum(x)) inf=float("inf") DP=[inf]*(N+1) DP[0]=0 for (w,s) in F: for k in range(N,0,-1): if DP[k-1]<=s: DP[k]=min(DP[k],DP[k-1]+w) print(max([k for k in range(N+1) if DP[k]