n, m = gets.split.map(&:to_i)

P = Struct.new(:a, :b)
l = []
n.times do |i|
  a, b = gets.split.map(&:to_i)
  l[i] = P.new(a, b)
end

l = l.sort{
  |l1, l2| l1.a <=> l2.a
}

ans = 0
l.each do |x|
  if m <= x.b
    ans += m * x.a
    break
  else
    ans += x.b * x.a
    m -= x.b
  end
  # puts ans
end
puts ans