#include <stdio.h>
#include <ctype.h>
 
int from_mcxi(const char* mcxi) {
    const char* nowp=mcxi;
    int num=1;
    int result=0;
    for(;*nowp;nowp++) {
        switch(*nowp) {
            case 'm':
                result+=1000*num;
                num=1;
                break;
            case 'c':
                result+=100*num;
                num=1;
                break;
            case 'x':
                result+=10*num;
                num=1;
                break;
            case 'i':
                result+=1*num;
                num=1;
                break;
            default:
                if(isdigit(*nowp))num=*nowp-'0';
        }
    }
    return result;
}
 
void to_mcxi(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 data_num,now_data;
    char q1[100],q2[100],ans[100];
    scanf("%d",&data_num);
    for(now_data=0;now_data<data_num;now_data++) {
        scanf("%s%s",q1,q2);
        to_mcxi(ans,from_mcxi(q1)+from_mcxi(q2));
        puts(ans);
    }
    return 0;
}