#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 100000
#define min(a,b) (((a)<(b)) ? (a) : (b))

typedef struct{
  char name[100];
  int t;
}p;

p q[LEN];
int head=0,tail=0,n;

void enqueue(p x){
  int next=(tail+1)%LEN;

  if(head==next){
    printf("Queue overflow!\n");
    exit(2);
  }

  q[tail]=x;
  tail=next;
}
p dequeue(void){
  p x;

  if(head==tail){
    printf("Queue is empty!\n");
    exit(3);
  }

  x=q[head];
  head=(head+1)%LEN;
  return x;
}

int main(){
  int i,qn,c,time=0;
  p u;

  scanf("%d%d",&n,&qn);

  for(i=1;i<=n;i++){
    scanf("%s%d",q[i].name,&q[i].t);
    enqueue(q[i]);
  }

  while(head!=tail){
    u=dequeue();                  //処理するものを取り出す
       c=min(qn,u.t);                //ｑｍｓと処理するものを比較
    u.t-=c;                      //処理するものを比較して値が小さかったほうで引く
    time+=c;                     //経過時間を計算
    if(u.t>0) enqueue(u);        //処理が終了していないものはもう１度、キューを行う
    else{
      printf("%s %d\n",u.name,time);
    }
  }


  return 0;
}
