local mmi, mma = math.min, math.max local m, n = io.read("*n", "*n") local t = {} for i = 1, m do t[i] = {io.read("*n", "*n")} end table.sort(t, function(a, b) return a[1] > b[1] end) local z = {} for i = 1, n + 1 do z[i] = 0 end local ret = 0LL for i = 1, m do local v, w = t[i][1], t[i][2] for j = n + 1 - w, 1, -1 do z[j + w] = mma(z[j + w], z[j] + v) end local cand = 1LL * z[n + 1] * v if ret < cand then ret = cand end end ret = tostring(ret):gsub("LL", "") print(ret)