## https://yukicoder.me/problems/no/3713 MAX_INT = 10 ** 18 def main(): N, A, B = map(int, input().split()) xy = [] for _ in range(N): x, y = map(int, input().split()) xy.append((x, y)) dp = [[MAX_INT ] * (A + 1) for _ in range(N + 1)] dp[0][0] = 0 for x, y in xy: new_dp = [[MAX_INT ] * (A + 1) for _ in range(N + 1)] for n in range(N + 1): for a in range(A + 1): new_dp[n][a] = min(new_dp[n][a], dp[n][a]) if n + 1 <= N and a + x <= A: new_dp[n + 1][a + x] = min(new_dp[n + 1][a + x], dp[n][a] + y) dp = new_dp answer = 0 for n in range(N + 1): for a in range(A + 1): if dp[n][a] <= B: answer = max(answer, n) print(answer) if __name__ == "__main__": main()