//參考: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]);
}
}
}