import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

class Main{

	public static void main(String[] args) {

		List<Integer> time=new ArrayList<Integer>();		//キューの処理にかかる時間
		List<String> cue_nm=new ArrayList<String>();
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String moto="";
		StringTokenizer stk;
		int cue_su=0;		//もともと与えられたキュー数
		int jikan=0;		//現在の経過時間
		int quantum=0;		//キューの処理時間制限
		int que_zanryo=0;	//キューの残数

		String name="";				//変数保管用
		int suuji=0;
		boolean end=false;

		try {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		}catch(IOException e) {
			System.exit(0);
		}
		catch(IndexOutOfBoundsException e) {
			System.exit(0);
		}
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.ArrayList; ArrayList java.util import java.util.List; List java.util import java.util.StringTokenizer; StringTokenizer java.util class Main{

	public static void main(String[] args) {

		List<Integer> time=new ArrayList<Integer>();		//キューの処理にかかる時間
		List<String> cue_nm=new ArrayList<String>();
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String moto="";
		StringTokenizer stk;
		int cue_su=0;		//もともと与えられたキュー数
		int jikan=0;		//現在の経過時間
		int quantum=0;		//キューの処理時間制限
		int que_zanryo=0;	//キューの残数

		String name="";				//変数保管用
		int suuji=0;
		boolean end=false;

		try {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		}catch(IOException e) {
			System.exit(0);
		}
		catch(IndexOutOfBoundsException e) {
			System.exit(0);
		}
	}
} Main public static void main(String[] args) {

		List<Integer> time=new ArrayList<Integer>();		//キューの処理にかかる時間
		List<String> cue_nm=new ArrayList<String>();
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String moto="";
		StringTokenizer stk;
		int cue_su=0;		//もともと与えられたキュー数
		int jikan=0;		//現在の経過時間
		int quantum=0;		//キューの処理時間制限
		int que_zanryo=0;	//キューの残数

		String name="";				//変数保管用
		int suuji=0;
		boolean end=false;

		try {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		}catch(IOException e) {
			System.exit(0);
		}
		catch(IndexOutOfBoundsException e) {
			System.exit(0);
		}
	} main {

		List<Integer> time=new ArrayList<Integer>();		//キューの処理にかかる時間
		List<String> cue_nm=new ArrayList<String>();
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String moto="";
		StringTokenizer stk;
		int cue_su=0;		//もともと与えられたキュー数
		int jikan=0;		//現在の経過時間
		int quantum=0;		//キューの処理時間制限
		int que_zanryo=0;	//キューの残数

		String name="";				//変数保管用
		int suuji=0;
		boolean end=false;

		try {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		}catch(IOException e) {
			System.exit(0);
		}
		catch(IndexOutOfBoundsException e) {
			System.exit(0);
		}
	} List<Integer> time=new ArrayList<Integer>(); time new ArrayList<Integer>() List<String> cue_nm=new ArrayList<String>(); cue_nm new ArrayList<String>() BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); bfr new BufferedReader(new InputStreamReader(System.in)) String moto=""; moto "" StringTokenizer stk; stk int cue_su=0; cue_su 0 int jikan=0; jikan 0 int quantum=0; quantum 0 int que_zanryo=0; que_zanryo 0 String name=""; name "" int suuji=0; suuji 0 boolean end=false; end false try {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		}catch(IOException e) {
			System.exit(0);
		}
		catch(IndexOutOfBoundsException e) {
			System.exit(0);
		} catch(IOException e) {
			System.exit(0);
		} IOException e {
			System.exit(0);
		} System.exit(0) System.exit System 0 catch(IndexOutOfBoundsException e) {
			System.exit(0);
		} IndexOutOfBoundsException e {
			System.exit(0);
		} System.exit(0) System.exit System 0 {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		} moto=bfr.readLine() moto bfr.readLine() bfr.readLine bfr stk=new StringTokenizer(moto, " ") stk new StringTokenizer(moto, " ") cue_su=Integer.parseInt(stk.nextToken()) cue_su Integer.parseInt(stk.nextToken()) Integer.parseInt Integer stk.nextToken() stk.nextToken stk quantum=Integer.parseInt(stk.nextToken()) quantum Integer.parseInt(stk.nextToken()) Integer.parseInt Integer stk.nextToken() stk.nextToken stk que_zanryo=cue_su que_zanryo cue_su for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			} int i=0; int i=0; i 0 i<cue_su i cue_su i++ i++ i {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			} {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			} moto=bfr.readLine() moto bfr.readLine() bfr.readLine bfr stk=new StringTokenizer(moto," ") stk new StringTokenizer(moto," ") name=stk.nextToken() name stk.nextToken() stk.nextToken stk suuji=Integer.parseInt(stk.nextToken()) suuji Integer.parseInt(stk.nextToken()) Integer.parseInt Integer stk.nextToken() stk.nextToken stk if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				} suuji>quantum suuji quantum {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				} time.add(suuji-quantum) time.add time suuji-quantum suuji quantum cue_nm.add(name) cue_nm.add cue_nm name jikan+=quantum jikan quantum {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				} jikan+=suuji jikan suuji System.out.println(name+" "+jikan) System.out.println System.out System System.out name+" "+jikan name+" "+jikan name " " jikan while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			} true {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			} name=cue_nm.get(0) name cue_nm.get(0) cue_nm.get cue_nm 0 suuji=time.get(0) suuji time.get(0) time.get time 0 if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				} suuji>quantum suuji quantum {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				} jikan+=quantum jikan quantum suuji=suuji-quantum suuji suuji-quantum suuji quantum cue_nm.remove(0) cue_nm.remove cue_nm 0 time.remove(0) time.remove time 0 cue_nm.add(name) cue_nm.add cue_nm name time.add(suuji) time.add time suuji {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				} jikan+=suuji jikan suuji cue_nm.remove(0) cue_nm.remove cue_nm 0 time.remove(0) time.remove time 0 System.out.println(name+" "+jikan) System.out.println System.out System System.out name+" "+jikan name+" "+jikan name " " jikan if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				} cue_nm.size()<=0 cue_nm.size() cue_nm.size cue_nm 0 {
					System.exit(0);
				} System.exit(0) System.exit System 0 {
					end=false;
				} end=false end false String[] args args
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

class Main{

	public static void main(String[] args) {

		List<Integer> time=new ArrayList<Integer>();		//キューの処理にかかる時間
		List<String> cue_nm=new ArrayList<String>();
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String moto="";
		StringTokenizer stk;
		int cue_su=0;		//もともと与えられたキュー数
		int jikan=0;		//現在の経過時間
		int quantum=0;		//キューの処理時間制限
		int que_zanryo=0;	//キューの残数

		String name="";				//変数保管用
		int suuji=0;
		boolean end=false;

		try {
			moto=bfr.readLine();
			stk=new StringTokenizer(moto, " ");
			cue_su=Integer.parseInt(stk.nextToken());
			quantum=Integer.parseInt(stk.nextToken());

			que_zanryo=cue_su;

			for(int i=0; i<cue_su; i++) {
				moto=bfr.readLine();
				stk=new StringTokenizer(moto," ");
				name=stk.nextToken();
				suuji=Integer.parseInt(stk.nextToken());

				if(suuji>quantum) {
					time.add(suuji-quantum);
					cue_nm.add(name);
					jikan+=quantum;
				}
				else {
					//リストにはついかしない
					jikan+=suuji;
					System.out.println(name+" "+jikan);
				}
			}

			while(true) {
				name=cue_nm.get(0);
				suuji=time.get(0);

				if(suuji>quantum) {
					jikan+=quantum;
					suuji=suuji-quantum;
					cue_nm.remove(0);
					time.remove(0);
					cue_nm.add(name);
					time.add(suuji);
				}
				else {
					jikan+=suuji;
					cue_nm.remove(0);
					time.remove(0);
					System.out.println(name+" "+jikan);
				}

				if(cue_nm.size()<=0) {
					System.exit(0);
				}

				else {
					end=false;
				}
			}

		}catch(IOException e) {
			System.exit(0);
		}
		catch(IndexOutOfBoundsException e) {
			System.exit(0);
		}
	}
}
