import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	}
}
 import java.util.ArrayDeque; ArrayDeque java.util import java.util.Queue; Queue java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	}
} Main public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	} main {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int num num quantum = 0; quantum 0 int time = 0; time 0 Queue<String> qName = new ArrayDeque<String>(); qName new ArrayDeque<String>() Queue<Integer> qTime = new ArrayDeque<Integer>(); qTime new ArrayDeque<Integer>() num = scan.nextInt() num scan.nextInt() scan.nextInt scan quantum = scan.nextInt() quantum scan.nextInt() scan.nextInt scan scan.nextLine() scan.nextLine scan for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		} int i = 0; int i = 0; i 0 i < num i num i++ i++ i {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		} {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		} qName.add(scan.next()) qName.add qName scan.next() scan.next scan qTime.add(scan.nextInt()) qTime.add qTime scan.nextInt() scan.nextInt scan while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		} !qName.isEmpty() qName.isEmpty() qName.isEmpty qName {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		} String qNamePolled = qName.poll(); qNamePolled qName.poll() qName.poll qName int getTime = qTime.poll(); getTime qTime.poll() qTime.poll qTime if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			} getTime > quantum getTime quantum { // 総時間数をカウントしていく
				time = time + quantum;
			} time = time + quantum time time + quantum time quantum {
				time = time + getTime;
			} time = time + getTime time time + getTime time getTime if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			} getTime > quantum getTime quantum {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} qTime.add(getTime - quantum) qTime.add qTime getTime - quantum getTime quantum qName.add(qNamePolled) qName.add qName qNamePolled { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			} System.out.println(qNamePolled + " " + time) System.out.println System.out System System.out qNamePolled + " " + time qNamePolled + " " + time qNamePolled " " time scan.close() scan.close scan String args[] args public class Main {
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	}
} public class Main {
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	}
} Main
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		int num, quantum = 0;
		int time = 0; // time;総時間数
		Queue<String> qName = new ArrayDeque<String>();
		Queue<Integer> qTime = new ArrayDeque<Integer>();

		num = scan.nextInt(); // 入力数
		quantum = scan.nextInt(); // クオンタム（実行する処理時間）
		scan.nextLine();

		for (int i = 0; i < num; i++) {
			qName.add(scan.next());
			qTime.add(scan.nextInt());
		}

		while (!qName.isEmpty()) {
			String qNamePolled = qName.poll();
			int getTime = qTime.poll();

			if (getTime > quantum) { // 総時間数をカウントしていく
				time = time + quantum;
			} else {
				time = time + getTime;
			}

			if (getTime > quantum) {
				qTime.add(getTime - quantum);
				qName.add(qNamePolled);
			} else { // 今のプロセス処理終了
				System.out.println(qNamePolled + " " + time);
			}
		}
		scan.close();
	}
}

