/**
 * @author twason
 *
 * Problem A: Keitai Message
 * http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2006
 *
 * Main.java
 * 2017/10/11
 *
 */ 

import java.util.Scanner;

public class Main {

	public static void main(String[] args){
		// ???????????????????????°???????????????
		Scanner scanner = new Scanner(System.in);
		int caseCount;
		caseCount = Integer.parseInt(scanner.nextLine());

		Keitai keitai = new Keitai();	// ????????????????????????

		// ?????????????????????????????????
		// ??\??????????????????????????????????????????????????????????????°?????????
		for (int i = 0; i < caseCount; i++) {
			System.out.println(keitai.getMessage(scanner.nextLine()));
		}

		scanner.close();
	}
}

/**
 *  ???????????????
 *  ??\????????????????????????????????????????????????????????????...?
 *  ???AOJ?????£????????§???????????±??????????????£?????????????????????????????????????????§Main??§?????£?????????????????????
 *   (????????§???Scanner?????????????°????????????????????????????)
 */
class Keitai {
	private static final int PATTERNLEN_MAX = 1024;		// ??\???????????????????????§???
	private static final int STRLEN_MAX = 75;		// ????????????????????????????????§???
	private static final String[] characters = {
		"",
		".,!? ",
		"abc",
		"def",
		"ghi",
		"jkl",
		"mno",
		"pqrs",
		"tuv",
		"wxyz"
	};	// ????????¨

    private static final char CONFIRM_KEY = '0';

	private static Scanner scanner;

	/**
	 *  ????????????????????????????????????????????????????????????????????????????????????
     *  @param pattern ???????????\???????????????
	 */ 
	public String getMessage(String pattern) {
		// ???????????????????????????????????????????????????
		String message = this.convertPatternToMessage(pattern);  
		return message;
	}

	/**
	 * ???????????\????????????????????????????????????????????????
	 * @param pattern ???????????\???????????????
	 */ 
	private String convertPatternToMessage(String pattern) {
		String result = "";	// ???????????????????????????

		char[] patternArray = pattern.toCharArray();	//??\???????????????(String)???char??????????????????

		char row;	// ????????¨??????
		int col;	// ????????¨??????

		int cursor = 0;	// ?????????????????°?????????????????????

		// 1??????????????????(?????????????????\??????????????????????????? or ????????????????????§???????¶????????????§?????????)
		while (cursor < patternArray.length && cursor < this.PATTERNLEN_MAX) {		
			// ???????????????????????????????????????
			if (patternArray[cursor] != this.CONFIRM_KEY) {
				row = patternArray[cursor];	// ??????????????? = ????????¨??????
				col = 0;					// ??°??????????????°???= ????????¨??????
				cursor++;			

				// ???????????????????????????????????????(?¢?????????????:0????????????????????§????????????)
				while (patternArray[cursor] != this.CONFIRM_KEY &&  (cursor < patternArray.length && cursor < this.PATTERNLEN_MAX)) {
						col++;
						cursor++;
				}
				col = col % (characters[Character.getNumericValue(row)].toCharArray().length);	// ????????¨???row???????????°??§??°??????????????°???mod?????????
				result += characters[Character.getNumericValue(row)].toCharArray()[col];		// result += ????????¨[row][col]
			} else {
				// ??????????¢?????????????????????\???????????±???
				cursor++;
			}
		}
		return result;
	}
} 
	

Measured memory_bytes: 31036