N, W = gets.split.map(&:to_i)

h = Array.new(W+1, 0)
N.times do 
    w, v = gets.split.map(&:to_i)

    (W - w).downto(0) do |i|
        h[w + i] = h[i] + v if h[w + i] < h[i] + v 
    end
end

puts h.max