//参考:https://www.cnblogs.com/zszq/p/6079308.html(更详细,更全)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while(n<1&&n>10);
        String[] str = new String[n];
        String[] num = new String[n];
        for(int i=0; i<n; i++)
        {
            str[i] = sc.next();
            while(str[i].length()>100000);
            
            //十六进制转二进制
            StringBuilder strbB = new StringBuilder();
            for(int j=0; j<str[i].length(); j++)
            {
                String b = Integer.toBinaryString(Integer.valueOf(String.valueOf(str[i].charAt(j)), 16));
                //java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用此方法。但在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。
                //而valueOf(Object obj)对null值进行了处理,不会报任何异常。但当object为null 时,String.valueOf(object)的值是字符串”null”,而不是null。
                for(int k=b.length(); k<4; k++)
                {
                    b = '0'+b;
                }
                strbB.append(b);
            }
            
            //二进制转十六进制
            StringBuilder strbO = new StringBuilder();
            int num0 = 3-strbB.length()%3;
            for(int j=0; j<num0; j++)
            {
                strbB = new StringBuilder("0").append(strbB);
            }
            for(int k=0; k<strbB.length(); k+=3)
            {
                String strB = strbB.substring(k,k+3);
                String strO = Integer.toOctalString(Integer.valueOf(String.valueOf(strB), 2));
                strbO.append(strO);
            }
            num[i] = strbO.toString().replaceAll("^(0+)", "");
            //replaceAll的第一个参数是转义字符,不需要转义时用replace
        }
        for(int i=0; i<n; i++)
        {
            System.out.println(num[i]);
        }
    }
}