n, v, c = read_line.split.map(&.to_i) dp = Array.new(v + 1, 0) n.times do a, b = read_line.split.map(&.to_i) (v - a).downto(0) do |i| dp[i + a] = {dp[i + a], dp[i] + b + c}.max end a.upto(v) do |i| dp[i] = {dp[i], dp[i - a] + b}.max end end puts dp.max