#include <stdio.h>
#define N 100000

typedef struct
{
  int t;
  char name[10];
//  int back;
  int next;
}queue;

int main(void)
{
  queue Q[N];
  int n,q;
  int i,j;
  int total=0;
  int count=0;
  int check=0;
  scanf("%d %d",&n,&q);
//  scanf("%s %d",Q[0].name,&Q[0].t);
//  Q[0].next = 1;
//  Q[0].back = n-1;
//printf("n:%d\n",n);
  for(i=0;i<n-1;i++)
  {
    scanf("%s %d",Q[i].name, &Q[i].t);
      Q[i].next = i+1;
//    Q[i].back = i-1;
  }
//  printf("OK\n");
  scanf("%s %d",Q[n-1].name,&Q[n-1].t);
  Q[n-1].next = 0;
//  printf("OK2\n");
//  Q[n-1].back = n-2;
  i=n-1;
  while(1)
  {
    j=Q[i].next;
//    printf("i:%s j:%s ",Q[i].name,Q[j].name);
//    printf("time:%d\n",Q[j].t);


//    printf("check1\n");
    if(Q[j].t<=q)
      {
//        printf("check1-1\n");
        total+=Q[j].t;
//          Q[i].t=0;
        printf("%s %d\n",Q[j].name,total);
        count++;
//        printf("count:%d\n",count);
        if(count==n) break;
//        printf("inext:%s jnext:%s\n",Q[Q[i].next].name,Q[Q[j].next].name);
        Q[i].next = Q[j].next;
//          Q[Q[i].next].back = Q[i].back;
      }
      else
      {
//        printf("check1-2\n");
        total+=q;
        Q[j].t-=q;
        i = Q[i].next;
      }
//      printf("check2\n");

//      i++;//=Q[i].next;
//      if(i==n)i=0;
//    printf("inext:%s\n",Q[Q[i].next].name );
  }

  return 0;
}