#include <stdio.h>
#define N 100000

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

P Q[N];
int head, tail,n;

void enqueue(P x){
    Q[tail]=x;
    tail=(tail+1)%N;
}

P dequeue(){
    P x=Q[head];
    head =(head+1)%N;
    return x;
}

int min(int a, int b){ return a<b ?a:b;} //最小返す
    
int main(){
    int elaps=0,c;
    int i,q;
    P u;
    scanf("%d%d",&n,&q);

//全プロセスをキューに順に追加
    

for(i=1;i<=n;i++){
    scanf("%s %d",Q[i].name,&Q[i].time);
}
    head=1;
    tail=n+1;
    
    while(head != tail){
        u=dequeue();
        c=min(q,u.time); //qまたは必要な時間u.timeだけ処理する
        u.time-=c;//残りの必要時間
        elaps+=c;//経過時間たす
        if(u.time>0) enqueue(u);
        else{
            printf("%s %d\n",u.name,elaps);
        }
    }
    return 0;
}
