#include <stdio.h>
#include <string.h>
#define MAX 100001

typedef struct{
  char name[10];
  int time;
}Que;

void enqueue(Que);
Que dequeue(void);
int min(int,int);
Que Q[MAX];
int head,tail;

int main(void){
  int n,q,i,totalTime=0,c;
  Que que;
  scanf("%d%d",&n,&q);
  for(i=1;i<=n;i++)
    scanf("%s%d",Q[i].name,&Q[i].time);
  head=1;
  tail=n+1;

  //start running
  while(head!=tail){
    que=dequeue();
    c=min(q,que.time);//qか残りのtimeの必要な時間の選択
    que.time-=c;//残り時間の計算
    totalTime+=c;//経過時間
    if(que.time>0)enqueue(que);//処理の終了していないqueをキューの最後に追加
    else printf("%s %d\n",que.name,totalTime);
  }
  return 0;
}

void enqueue(Que x){
  Q[tail]=x;
  tail=(tail+1)%MAX;
}

Que dequeue(){
  Que x=Q[head];
  head=(head+1)%MAX;
  return x;
}

int min(int a,int b){
  return a<b ?a :b;
  // ?はtureの時a  :はfalseの時bを返す
}
