#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 100005


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

P Q[LEN+1];
int head, tail, n;

void enqueue(P);
P dequeue(void);
int isEmpty(void);
int isFull(void);



int main(){
  int elaps = 0, c;
  int i, q;
  P u;
  scanf("%d %d", &n, &q);

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

   
    if(Q[head].t>q){
       strcpy(u.name,Q[head].name);
       u.t=Q[head].t-q;
    
       dequeue();
       enqueue(u);
       elaps+=q;
     }
    else if(Q[head].t==q){
	elaps+=q;
	printf("%s %d\n",Q[head].name,elaps);
	dequeue();
	}
    else if(Q[head].t<q){
	elaps+=Q[head].t;
	printf("%s %d\n",Q[head].name,elaps);
	dequeue();
    }
    
      
      if(isEmpty()==1) break;
  }
  
  return 0;
}

int isEmpty(void){
  if(head==tail) return 1;
  else return 0;
}

int isFull(void){
  if(head==(tail+1)%LEN) return 1;
  else return 0;
}


void enqueue(P x){
  if (isFull()==1){
    printf("error\n");
  }
  Q[tail] = x;
  if (tail + 1 == LEN){
    tail = 0;
  }
  else
    tail++;
       }
 

P dequeue(void){
  P x;
  if (isEmpty()==1){
    printf("error\n");
  }
  x = Q[head];
  if (head + 1 == LEN){
    head = 0;
  }
   else
     head++;
  return x;
       }

