#include <stdio.h>
#include <stdlib.h>
#define MAX 1000000

typedef struct{
    char number[100];
    int t;
}data;

int head,tail;
int count;
data Q[MAX];

int isEmpty();/*キューが空なら1を返し、そうでないなら0を返す*/
int isFull();/*キューにこれ以上要素が入らなければ1を返し、そうでないなら0を返す*/
void enqueue(data num);/*要素挿入*/
data dequeue();/*要素取出し*/


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

    for(int i=1; i<=n; i++){
        scanf("%s",Q[i].number);
        scanf("%d",&Q[i].t);
    }

    head = 1;
    tail = n+1;

    while(tail != head){
        data num;
        num = dequeue();
        if(num.t <= q){
            count += num.t;
            num.t = 0;
            printf("%s %d\n",num.number,count);
        }

        else if(num.t > q){
            count += q;
            num.t -= q;
            enqueue(num);
        } 
    }

    return 0;
}

int isEmpty(){
    if(head == tail) return 1;
    return 0;
}

int isFull(){
    if(head == (tail+1)%MAX) return 1;
    return 0;
}

void enqueue(data num){
    if(isFull()){
        printf("Erorr,queue is full\n");
        exit(2);
    }

    Q[tail] = num;

    if(tail +1 == MAX)tail = 0;
    else tail++;
    
}

data dequeue(){
    data num;
    if(isEmpty()){
        printf("Error, queue is empty\n");
        exit(3);
    }

    num = Q[head];
    if(head + 1 == MAX) head = 0;
    else head++;

    return num;
}

