#include <stdio.h>
#include <stdlib.h>

#define LEN 100005

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

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

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

int main()
{
  int i, q, total = 0;
  P pc;
  
  scanf("%d %d", &n, &q);

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

  /* プロセスを実行 */
  while(1)
    {
      /*実行するプロセスを取り出す*/
      pc = dequeue();

      /* 処理実行 */
      total += q;
      pc.t -= q;

      /*そのプロセスの実行が終了した場合 */
      if( pc.t <= 0 )
	{
	  total += pc.t;
	  printf("%s %d\n", pc.name, total);
	}
      else
	{
	  /*実行が終了しなかった場合 */
	  enqueue(pc);
	}

      /*全ての処理が終了した場合*/
      if( head == tail )
	break;
    }

  
  return 0;
}

/* Queueにデータを挿入する関数 */
void enqueue(P x)
{
  /* キューが満杯であるか判定 */
  if( isFull())
    {
      fprintf(stderr, "Error! Overflow\n");
      exit(3);
    }
  Q[tail] = x;
  tail = (tail+1) % LEN;
}

/* Queueからデータを取り出す関数 */
P dequeue(void)
{
  P x;
  
  /* キューが空であるか判定 */
  if( isEmpty() )
    {
      fprintf(stderr, "Underflow\n");
      exit(3);
    }
  x = Q[head];
  head = (head+1) % LEN;

  return x;
}

int isEmpty()
{
  return head == tail;
}

int isFull()
{
  return head == (tail+1) % LEN;
}

