module Queue' = struct
  type 'a t = {
    mutable front : int;
    mutable mask  : int;
    mutable index : int;
    mutable length : int;
    mutable elems : 'a option array
  }

  let capacity t = t.mask + 1

  let is_empty t = t.length = 0

  let create ?(capacity=1) () =
    { front = 0;
      mask  = capacity - 1;
      index = 0;
      length = 0;
      elems = Array.make capacity None}

  let enq t a =
    let elems = t.elems in
    elems.(t.index) <- (Some a);
    t.length <- t.length + 1;
    t.index <- (t.index + 1) mod (capacity t)

  let deq t =
    let elems = t.elems in
    let front = t.front in
    let res = elems.(front) in
    t.front <- (t.front + 1) mod (capacity t);
    t.length <- t.length - 1;
    res

  let get_elems t = t.elems
  let get_index t = t.index
end

let () =
  let open Queue' in
  let (n:int),(quantum:int) = Scanf.scanf "%d %d\n" (fun a b -> a,b) in
  let (q:(string * int) t) = create ~capacity:n () in
  for i=1 to n do
    enq q (Scanf.scanf "%s %d\n" (fun a b -> a,b));
  done;
  let (sum:int ref) = ref 0 in
  while not (is_empty q) do
    let (p:string),(t:int) = match deq q with None -> "",0 | Some x -> x in
    if t <= quantum then (sum := !sum+t; Printf.printf "%s %d\n" p !sum)
    else (enq q (p,t-quantum); sum := !sum+quantum)
  done