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

# キュー
queue = []

# 総合時間
t_time = 0

# 答えのハッシュ
ans = {}

n.times do
  queue << gets.split
end

# 配列の文字数字だけ数字に直す
queue = queue.map{|a,b|[a,b.to_i]}

# 名前の配列を作る
queue.each do |que|
  ans[que[0]] = 0
end

# キューが空になるまで無限ループ！！
while true
  
  # キューから先頭を取り出しクアンタム時間(q)を引く
  a = queue.shift
  a[1] -= q

  if a[1] > 0
    # 処理時間が残っていればキューの最後に追加、総合時間も追加
    t_time += q
    queue << a
  else
    # 処理時間が残っていなければクアンタム時間と処理時間を足して（-だと-２つになって+になるので×)総合時間に追加
    # 総合時間を作っておいたハッシュに追加
    t_time += q + a[1]
    ans[a[0]] = t_time
  end

  # キューが空ならループ終了
  break if queue.empty?
end

# ソートして出力
ans.sort_by{|a,b| b }.each{|an| puts an.join(" ")}
