#include <stdio.h>
#include <ctype.h>

int decimal(const char* mcxi) {
  const char* nowp=mcxi;
  int num=1;
  int decimal=0;
  for(;*nowp;nowp++) {
    switch(*nowp) {
    case 'm':
      decimal+=1000*num;
      num=1;
      break;
    case 'c':
      decimal+=100*num;
      num=1;
      break;
    case 'x':
      decimal+=10*num;
      num=1;
      break;
    case 'i':
      decimal+=1*num;
      num=1;
      break;
    default:
      if(isdigit(*nowp))num=*nowp-'0';
    }
  }
  return decimal;
}
 
void sum(char* mcxi,int num){
  if(num>=1000){
    if(num>=2000)*(mcxi++)=(num/1000)+'0';
    *(mcxi++)='m';
    num%=1000;
  }
  if(num>=100) {
    if(num>=200)*(mcxi++)=(num/100)+'0';
    *(mcxi++)='c';
    num%=100;
  }
  if(num>=10) {
    if(num>=20)*(mcxi++)=(num/10)+'0';
    *(mcxi++)='x';
    num%=10;
  }
  if(num>=1) {
    if(num>=2)*(mcxi++)=(num/1)+'0';
    *(mcxi++)='i';
    num%=1;
  }
  *mcxi=0;
}
 
int main(void) {
  int num,i;
  char MCXI_1[100],MCXI_2[100];

  struct{
    char sum[100];
  }SUM[500];

  scanf("%d",&num);

  if(num >500){
    num = 500;
  }

  for(i=0;i<num;i++){
    scanf("%s%s",MCXI_1,MCXI_2);
    sum(SUM[i].sum,decimal(MCXI_1)+decimal(MCXI_2));
  }

  for(i=0;i<num;i++){
    printf("%s\n", SUM[i].sum);
  }

  return 0;
}