#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define mymalloc(p,n) {p = malloc((n)*sizeof(*p));if ((p)==NULL) {printf("not enough memory?\n"); exit(1);};}

typedef struct obj{
	struct obj *prev;
	struct obj *next;
	int name;
	int time;
}obj;

typedef struct{
	struct obj *root;
	struct obj *last;
}queue;

obj *createObj(int name, int time){
	obj *ob;
	mymalloc(ob,1);
	ob->prev=NULL;
	ob->next=NULL;
	ob->name=name;
	ob->time=time;
	return ob;
}

queue *createQueue(){
	queue *Q;
	mymalloc(Q,1);
	Q->root=NULL;
	Q->last=NULL;
}

void enqueue(queue *Q,obj *input){
	if(Q->root==NULL){
		Q->root=input;
		Q->last=input;
	}
	else{
		Q->root->prev=input;
		input->next=Q->root;
		Q->root=input;
	}
}

obj *dequeue(queue *Q){
	obj *output;
	if(Q->last==NULL){
		return NULL;
	}
	else{
		output=Q->last;
		if(Q->last->prev==NULL){
			Q->last=NULL;
			Q->root=NULL;
		}
		else{
			Q->last=Q->last->prev;
		}
		return output;
	}
}
	
main(){
	int i,n,q,name,time;
	int clock;
	char c;
	obj *prcs,*prcs2;
	queue *Q;
	Q=createQueue();
	scanf("%d	%d",&n,&q);
	for(i=1;i<=n;i++){
		scanf(" %c%d %d",&c,&name,&time);
		enqueue(Q,createObj(name,time));
	}
	
	clock=0;
	prcs=dequeue(Q);
	while(prcs!=NULL){
		if(prcs->time<=q){
			clock+=prcs->time;
			printf("p%d %d\n",prcs->name,clock);
		}
		else{
			clock+=q;
			prcs2=createObj(prcs->name,prcs->time-q);
			enqueue(Q,prcs2);
		}
		prcs=dequeue(Q);
	}
	return 0;
}