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

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

void enqueue(Process );
Process dequeue(void);
void calc(int n); //計算する関数

int n=0,j=0;//ループ回数を記録する外部変数
int head=0, tail=0;
int sum=0;//時間の合計を記録する外部変数

Process pro[MAX];

int main(){
  int i;
  int ms;
  
  scanf("%d%d", &n, &ms);
  
  for( i=0 ; i<n ; i++){
    scanf("%s%d", pro[i].name, &pro[i].time);
    tail++;
  }

  calc(ms);//計算開始
    
  return 0;
}

void calc(int ms){
  int i, dif;
  Process x;
  
  for( i=0; head!=tail ; i++){
    dif = pro[head].time - ms;
    if(dif  > 0){
      x = dequeue();
      x.time = dif;
      enqueue(x);
      sum += ms;
    }else{
      sum += pro[head].time;
      x = dequeue();
      printf("%s %d\n",x.name,sum);
    }
  }
}

void enqueue(Process x){
  pro[tail] = x;
  
  if(tail+1 == MAX){
    tail = 0;
  }else{
    tail++;
  }
}

Process dequeue(){
  Process x;

  x = pro[head];
  
  if(head+1 == MAX){
    head = 0;
  }else{
    head++;
  }

  return x;
}

