n, t = gets.split.map(&:to_i)
ab = n.times.map {gets.split.map(&:to_i)}.sort_by{|e| e[0]}

dp = {}
dp[0] = 0
dp[ab[0][0]] = ab[0][1] if ab[0][0] < t
ans = ab[0][1]
ab.shift

ab.each do |a, b|
    m = 0
    d = {}
    dp.each do |k, v|
        d[k+a] = v + b if k + a < t
        m = v + b if m < v + b
    end
    dp.merge!(d) {|k, sv, ov| sv > ov ? sv : ov}
    ans = m if ans < m
end

puts ans
