while true do
  n, m = gets.split.map(&:to_i)
  break if n.zero? && m.zero?
  dp = n.times.map { gets.split.map(&:to_i) }.sort_by{|x| x[0]}
  while !m.zero? do
    tmp = dp[-1][0]
    dp[-1][0] = [dp[-1][0] - m, 0].max
    m = [m - tmp, 0].max
    dp.delete(dp[-1]) if dp[-1][0].zero?
  end
  p dp.map{|x| x[0] * x[1]}.inject :+
end