//第一题A题题解
//C语言版,根据官方题解改编 
#include<stdio.h>

//typedef long long i64;
//typedef unsigned long long u64;

int f[103];//从字符到整数的映射。ASCII码'0'~'9';'a'~'f';'A'~'F'。其中'f'ASCII码最大,为102。那么数组下标0~102,所以定义f[103]
char g[16];//从整数到字符的映射(只用到0~15)

void solve() {
     char s[8];//C语言中没有string,表示字符串,要用 字符数组,以字符'\0'作为字符串结束标志 
     scanf("%7s",s);s[7]='\0';//输入色号

     int R=f[s[1]]*16+f[s[2]];
     int G=f[s[3]]*16+f[s[4]];
     int B=f[s[5]]*16+f[s[6]];
     R=255-R;
     G=255-G;
     B=255-B;//再算出互补色的十进制数字

     char ans[8]="#";
     ans[1]=g[R/16];
     ans[2]=g[R%16];
     ans[3]=g[G/16];
     ans[4]=g[G%16];
     ans[5]=g[B/16];
     ans[6]=g[B%16];ans[7]='\0';

     printf("%s\n",ans); 
}

int main() {
//std::ios::sync_with_stdio(false);//关同步,C语言里不必写
//std::cin.tie(0);//关同步,C语言里不必写
//C++执行完关同步后,也同时具有开启了全缓冲的效果,会先读完所有输入,最后一起输出
//而C语言里不需要写关同步,但此题里却需要有输出全缓冲的效果,即 让输出一直攒着,直到程序结束才一次性打出来
setvbuf(stdout,NULL,_IOFBF,BUFSIZ);//输出全缓冲
//setvbuf设置缓冲区
//stdout我要设置的是 输出 的缓冲;对应stdin 输入
//NULL我不自己提供缓冲区,让系统自动分配一块缓冲区
//_IOFBF全缓冲;其他的还有_IOLBF行缓冲、_IONBF无缓冲
//BUFSIZ代表系统默认的缓冲区大小
     int i=0;
     for(;i<10;i++)
     {
     f[i+'0']=i;
     g[i]=i+'0';
     }
     //上面这段for循环执行完,刚好i=10,可不设初值继续执行 
     for(;i<=15;i++)
     {
     f[i-10+'A']=i;
     f[i-10+'a']=i;
     g[i]=i-10+'a';
     }

int t=1;
label:scanf("%d",&t);//输入一个1≤t≤10000的数
if(t<1 || t>10000)printf("RE(Runtime Error)\n");
if(t<1 || t>10000)goto label;

while(t--)solve();

return 0;
}