import java.util.Scanner;
publicclass Main {
public static void findLuckNum(int location){
//找出location打印的是几位数
int temp=location+2;
int yushu=0;
int jiweishu=0;
for(int i=1;i<100;i++){
if(temp-Math.pow(2, i)==0){
yushu=0;
jiweishu=i;
break;
}
if(temp>Math.pow(2, i)&&temp<Math.pow(2, i+1)){
yushu=(int) (temp-Math.pow(2, i));
jiweishu=i;
break;
}
}
if(yushu==0){
for(int k=1;k<jiweishu;k++){
System.out.print("7");
}
}
if(yushu!=0){
//这个数为第jiweishu层的第yushu数
int record=jiweishu-1;
int tem=yushu;
for(int k=record;k>=0;k--){
tem=(int)(tem-Math.pow(2,k));
if(tem>0){
System.out.print("7");
}else{
tem=(int)(tem+Math.pow(2,k));
System.out.print("4");
}
}
}
System.out.println();
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(input.hasNext()){
int n=input.nextInt();
int[] tem=new int[n];
for(int i=0;i<n;i++){
tem[i]=input.nextInt();
}
for(int j=0;j<n;j++){
Main.findLuckNum(tem[j]);
}
}
}
import java.util.Scanner;
publicclass Main {
public static void findLuckNum(int location){
int n=location+1;
String s=Integer.toBinaryString(n);
for(int i=1;i<s.length();i++){
if(s.charAt(i)=='0'){
System.out.print(4);
}else{
System.out.print(7);
}
}
System.out.println();
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(input.hasNext()){
int n=input.nextInt();
int[] tem=new int[n];
for(int i=0;i<n;i++){
tem[i]=input.nextInt();
}
for(int j=0;j<n;j++){
Main.findLuckNum(tem[j]);
}
}
}
}