N,A,B=map(int,input().split()) #dp[i][j][k] = i個目まで、重さがjで個数がk個であるときのminの攻撃力 INF=10**18 dp=[[[INF]*(N+1) for i in range(A+1)] for j in range(N+1)] dp[0][0][0]=0 for i in range(N): X,Y=map(int,input().split()) for j in range(A+1): for k in range(N+1): if dp[i][j][k]==INF: continue dp[i+1][j][k]=min(dp[i+1][j][k],dp[i][j][k]) if j+X<=A: dp[i+1][j+X][k+1]=min(dp[i+1][j+X][k+1],dp[i][j][k]+Y) ans=0 G=dp[-1] for j in range(A+1): for k in range(N+1): if G[j][k]<=B: ans=max(ans,k) print(ans) # for i in range(N+1): # for j in range(A+1): # for k in range(N+1): # if dp[i][j][k]