/*--------------------------*/
// p.87
// 4.3 キュー 
//
// ラウンドロビンスケジューリング（プロセス）
//
// 入力例：
//     5 100
//     p1 150
//     p2 80
//     p3 200
//     p4 350
//     p5 20
//
// 出力例：
//     p2 180
//     p5 400
//     p1 450
//     p3 550
//     p4 800
/*--------------------------*/


#include <stdio.h>
#include <string.h>

#define LEN 100005

/* プロセスを表す構造体 */
typedef struct pp{
  char name[100]; // 名前
  int time;       // 時間
}Process;

Process Q[LEN];
int head, tail;

/* enqueue */
void enqueue(Process x){
  Q[tail] = x;
  tail = (tail + 1) % LEN;
}

/* dequeue */
Process dequeue(){
  Process x = Q[head];
  head = (head + 1) % LEN;
  return x;
}

int min(int a, int b){
  return a < b ? a : b;
}

int main(){
  int elaps = 0;
  int c, i;
  int n, q;
  Process u;

  scanf("%d %d", &n, &q); // n: プロセス数, q: 最大qms(クオンタム)

  /* 全てのプロセスをキューに順番に追加する */
  for(i = 1 ; i <= n ; i++){
    scanf("%s", Q[i].name);  // 名前
    scanf("%d", &Q[i].time); // 時間
  }
  head = 1;
  tail = n + 1;

  /* シミュレーション */
  while(head != tail){
    u = dequeue();
    c = min(q, u.time); // 消費した時間
    u.time -= c;
    elaps  += c; // トータル経過時間

    if (u.time > 0){
      enqueue(u);
    }else{
      printf("%s %d\n", u.name, elaps);
    }
  }

  return 0;
}


