def max(a, b)
  a > b ? a : b
end

N, W = gets.chomp.split.map(&:to_i)
dp = Array.new(W + 1) { -1 }
dp[0] = 0
N.times do
  wi, vi = gets.chomp.split.map(&:to_i)

  (W-wi).downto(0) do |j|
    next if dp[j] == -1

    dp[j + wi] = max(dp[j + wi], dp[j] + vi)
  end
end

puts dp.max