#include<stdio.h>
#include<string.h>

int main(){
  int n, i, j, k, len, cnt;
  char str[1030], ans[80];

  scanf("%d", &n);
  
  for(i=0; i<n; i++){
    scanf("%s", str);

    len=strlen(str);

    // printf("%d\n", str[0]);
    
    cnt=0;
    k=0;
    for(j=0; j<len; j++){
      if(str[j]!=48){
	cnt++;
	//      	printf("%d", cnt);
      }else if(str[j]==48 && j!=0 && str[j-1]!=48){
	switch(str[j-1]){
	case 49:
	  switch(cnt%5){
	  case 1: ans[k]='.'; break;
	  case 2: ans[k]=','; break;
	  case 3: ans[k]='!'; break;
	  case 4: ans[k]='?'; break;
	  default: ans[k]=' '; break;
	  }
	  break;
	case 50:
	  switch(cnt%3){
	  case 1: ans[k]='a'; break;
	  case 2: ans[k]='b'; break;
	  default: ans[k]='c'; break;
	  }
	  break;
	case 51:
	  switch(cnt%3){
	  case 1: ans[k]='d'; break;
	  case 2: ans[k]='e'; break;
	  default: ans[k]='f'; break;
	  }
	  break;
	case 52:
	  switch(cnt%3){
	  case 1: ans[k]='g'; break;
	  case 2: ans[k]='h'; break;
	  default: ans[k]='i'; break;
	  }
	  break;
	case 53:
	  switch(cnt%3){
	  case 1: ans[k]='j'; break;
	  case 2: ans[k]='k'; break;
	  default: ans[k]='l'; break;
	  }
	  break;
	case 54:
	  switch(cnt%3){
	  case 1: ans[k]='m'; break;
	  case 2: ans[k]='n'; break;
	  default: ans[k]='o'; break;
	  }
	  break;
	case 55:
	  switch(cnt%4){
	  case 1: ans[k]='p'; break;
	  case 2: ans[k]='q'; break;
	  case 3: ans[k]='r'; break;
	  default: ans[k]='s'; break;
	  }
	  break;
	case 56:
	  switch(cnt%3){
	  case 1: ans[k]='t'; break;
	  case 2: ans[k]='u'; break;
	  default: ans[k]='v'; break;
	  }
	  break;
	case 57:
	  switch(cnt%4){
	  case 1: ans[k]='w'; break;
	  case 2: ans[k]='x'; break;
	  case 3: ans[k]='y'; break;
	  default: ans[k]='z'; break;
	  }
	  break;
 	}
	k++; cnt=0;
      }
    }
    
    for(j=0; j<k; j++){
      printf("%c", ans[j]);
    }
    printf("\n");
  }

  return 0;
}