using System;
using System.Collections.Generic;
using System.Text;

public static class MainClass
{
    public static void Main()
    {
        string testcasecount = Console.ReadLine();
        
        for(int i=0 ; i<int.Parse(testcasecount) ; i++)
        {
            string message = Console.ReadLine();
            string[] message1 = message.Split('0');
            int L = message1.Length;
                
                for(int y=0 ; y<L ; y++)
            {
                if (message1[y] != "" )
                {
                    char key = message1[y][0];
                    int count = message1[y].Length;
                    int amari = 0;
                    IDictionary<int,string> hash = new Dictionary<int,string>();

                    switch (key)
                    {
                        case '1':
                            hash.Add(0, " ");
                            hash.Add(1, ".");
                            hash.Add(2, ",");
                            hash.Add(3, "!");
                            hash.Add(4, "?");
                            amari = count % 5;
                            break;  
                        case '2':
                            hash.Add(0, "c");
                            hash.Add(1, "a");
                            hash.Add(2, "b");
                            amari = count % 3;
                            break;  
                        case '3':
                            hash.Add(0, "f");
                            hash.Add(1, "d");
                            hash.Add(2, "e");
                            amari = count % 3;
                            break;  
                        case '4':
                            hash.Add(0, "i");
                            hash.Add(1, "g");
                            hash.Add(2, "h");
                            amari = count % 3;
                            break;  
                        case '5':
                            hash.Add(0, "l");
                            hash.Add(1, "j");
                            hash.Add(2, "k");
                            amari = count % 3;
                            break;  
                        case '6':
                            hash.Add(0, "o");
                            hash.Add(1, "m");
                            hash.Add(2, "n");
                            amari = count % 3;
                            break;  
                        case '7':
                            hash.Add(0, "s");
                            hash.Add(1, "p");
                            hash.Add(2, "q");
                            hash.Add(3, "r");
                            amari = count % 4;
                            break;  
                        case '8':
                            hash.Add(0, "v");
                            hash.Add(1, "t");
                            hash.Add(2, "u");
                            amari = count % 3;
                            break;  
                        case '9':
                            hash.Add(0, "z");
                            hash.Add(1, "w");
                            hash.Add(2, "x");
                            hash.Add(3, "y");
                            amari = count % 4;
                            break;                              
                        default:
                            Console.WriteLine("エラー");
                            break;                                        

                    }
                    Console.Write("{0}", hash[amari]);  


                }
                
            }

                Console.WriteLine("");
        }

    }
}

Measured memory_bytes: 9612