n = read_line.to_i dp = [0i64] + [10i64**18] * n (1..n).map { read_line.split.map &.to_i }.sort_by(&.sum).each do |(a, b)| (1..n).reverse_each do |i| dp[i] = {dp[i], dp[i - 1] + a}.min if dp[i - 1] <= b end end puts dp.rindex(&.<(1e18))