-- AOJ: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2006
import Data.Char
import Data.List.Split
import Control.Monad.Cont
import Control.Applicative

solve :: String -> String
solve s = let ws = splitOn "0" s
              wss = filter (\x -> x /= "") ws
           in map (\x -> keyToChar x) wss

keyToChar :: []Char -> Char
keyToChar all@(x:xs) = toChar x $ length all

preset :: []String
preset = [".,!? ", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]

toChar :: Char -> Int -> Char
toChar x n = solveEx (n - 1) $ preset !! (ord x - ord '0' - 1)

solveEx :: Int -> [Char] -> Char
solveEx n xs = xs !! (n `mod` length xs)

main = do
    ns <- (map read . words) <$> getLine
    let n = ns !! 0
     in forM_ [0..(n-1)] $ \i ->  do
         ss <- getLine
         putStrLn $ solve ss