https://www.acmicpc.net/problem/16987
n=int(input())
arr=[list(map(int, input().split())) for _ in range(n)]
brokes=[0]*n
ans=0
def back(arr, brokes, idx):
global n
if idx==n:
global ans
ans=max(ans, brokes.count(1))
return
if brokes[idx]==1:
back(arr, brokes, idx+1)
return
isTrue=True
for i in range(n):
if brokes[i]==1 or idx==i:
continue
isTrue=False
arr[idx][0]-=arr[i][1]
arr[i][0]-=arr[idx][1]
if arr[idx][0]<=0:
brokes[idx]=1
if arr[i][0]<=0:
brokes[i]=1
back(arr, brokes, idx+1)
brokes[idx]=0
brokes[i]=0
arr[idx][0]+=arr[i][1]
arr[i][0]+=arr[idx][1]
if isTrue:
back(arr, brokes, idx+1)
back(arr, brokes, 0)
print(ans)