#include <stdio.h>
#include <string.h>
#define LEN 100005
int head,tail,n;
typedef struct pp{//Pはpp型の変数
  char name[100];
  int time;
}P;
P Q[LEN];
void enqueue(P);//キューの末尾に要素xを追加する
P dequeue(void);//キューの先頭から要素を取り出す
int isEmpty(void);//空か確かめる
int isFull(void);//満杯か確かめる
int min(int,int);
int main(){
  int q,ctime=0,c,i;
  P u;
  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;
  while(head!=tail){
	  u=dequeue();//取り出す
	  c=min(q,u.time);
	  u.time-=c;
	  ctime+=c;
	  if(u.time>0)
		enqueue(u);
	  else
		printf("%s %d\n",u.name,ctime);
  }
  return 0;
}
void enqueue(P x){
   Q[tail]=x;
  tail = (tail+1)%LEN;
}  
P dequeue(void){
  P x=Q[head];
  head=(head+1)%LEN;
  return x;
} 
int min(int a,int b){
  return a<b?a:b;
}

