const fi='';
fo='';
maxn=201;
type point=record
x,y:integer;
end;
var q:array[1..maxn*maxn+1] of point;
f:array[0..maxn,0..maxn] of longint;
t,n:integer;
d,c:longint;
procedure xuat(x,y:integer);
var i:integer;
begin
for i:=1 to x do write('8');
for i:=1 to y do write('6');
writeln;
end;
procedure push(x,y:integer);
begin
inc(c);
q[c].x:= x;
q[c].y := y;
end;
function mu(a:integer):longint;
var i:integer;
tam:longint;
begin
tam:=1;
for i:=1 to a do tam:=(tam*10) mod n;
exit(tam);
end;
procedure xuly;
var
x,y:integer;
begin
d:=1;c:=1;
q[1].x:=0;q[1].y:=0;
while d<=c do
begin
x:=q[d].x; y:=q[d].y;
inc(d);
if (x+y>0) and (f[x,y]=0) then begin xuat(x,y); exit; end;
if (y+1+x<=200) and (f[x,y+1]=-1) then
begin
f[x,y+1]:= (f[x,y]*10 +6) mod n ;
push(x,y+1);
end;
if (x+1+y<=200) and (f[x+1,y]=-1) then
begin
f[x+1,y]:=(8*mu(x+y) mod n + f[x,y] ) mod n ;
push(x+1,y);
end;
if x+y>200 then begin writeln(-1); exit; end;
end;
writeln(-1);
end;
procedure init;
var i,j:integer;
begin
for i:=0 to 200 do
for j:=0 to 200 do f[i,j]:=-1;
f[0,0]:=0;
end;
procedure main;
var i:integer;
begin
assign(input,fi);reset(input);
assign(output,fo);rewrite(output);
readln(t);
for i:=1 to t do
begin
readln(n);
init;
xuly;
end;
close(input);close(output);
end;
begin
main;
end.
Y29uc3QgICBmaT0nJzsKICAgICAgICBmbz0nJzsKICAgICAgICBtYXhuPTIwMTsKdHlwZSAgICBwb2ludD1yZWNvcmQKICAgICAgICAgICAgICAgIHgseTppbnRlZ2VyOwogICAgICAgICAgICAgICAgZW5kOwp2YXIgICAgIHE6YXJyYXlbMS4ubWF4biptYXhuKzFdIG9mIHBvaW50OwogICAgICAgIGY6YXJyYXlbMC4ubWF4biwwLi5tYXhuXSBvZiBsb25naW50OwogICAgICAgIHQsbjppbnRlZ2VyOwogICAgICAgIGQsYzpsb25naW50Owpwcm9jZWR1cmUgeHVhdCh4LHk6aW50ZWdlcik7CnZhciAgICAgaTppbnRlZ2VyOwpiZWdpbgogICAgZm9yIGk6PTEgdG8geCBkbyB3cml0ZSgnOCcpOwogICAgZm9yIGk6PTEgdG8geSBkbyB3cml0ZSgnNicpOwogICAgd3JpdGVsbjsKZW5kOwpwcm9jZWR1cmUgcHVzaCh4LHk6aW50ZWdlcik7CmJlZ2luCiAgICBpbmMoYyk7CiAgICBxW2NdLng6PSB4OwogICAgcVtjXS55IDo9IHk7CmVuZDsKZnVuY3Rpb24gbXUoYTppbnRlZ2VyKTpsb25naW50Owp2YXIgICAgIGk6aW50ZWdlcjsKICAgICAgICB0YW06bG9uZ2ludDsKYmVnaW4KICAgIHRhbTo9MTsKICAgIGZvciBpOj0xIHRvIGEgZG8gdGFtOj0odGFtKjEwKSBtb2QgbjsKICAgIGV4aXQodGFtKTsKZW5kOwpwcm9jZWR1cmUgeHVseTsKdmFyCiAgICAgICAgeCx5OmludGVnZXI7CmJlZ2luCgogICAgZDo9MTtjOj0xOwogICAgcVsxXS54Oj0wO3FbMV0ueTo9MDsKCiAgICB3aGlsZSBkPD1jIGRvCiAgICAgICAgYmVnaW4KICAgICAgICAgICAgeDo9cVtkXS54OyB5Oj1xW2RdLnk7CiAgICAgICAgICAgIGluYyhkKTsKICAgICAgICAgICAgaWYgKHgreT4wKSBhbmQgKGZbeCx5XT0wKSB0aGVuIGJlZ2luIHh1YXQoeCx5KTsgZXhpdDsgZW5kOwoKICAgICAgICAgICAgaWYgKHkrMSt4PD0yMDApIGFuZCAoZlt4LHkrMV09LTEpIHRoZW4KICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgZlt4LHkrMV06PSAoZlt4LHldKjEwICs2KSBtb2QgbiA7CiAgICAgICAgICAgICAgICAgICAgcHVzaCh4LHkrMSk7CiAgICAgICAgICAgICAgICBlbmQ7CgogICAgICAgICAgICBpZiAoeCsxK3k8PTIwMCkgYW5kIChmW3grMSx5XT0tMSkgIHRoZW4KICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgZlt4KzEseV06PSg4Km11KHgreSkgbW9kIG4gKyBmW3gseV0gKSBtb2QgbiA7CiAgICAgICAgICAgICAgICAgICAgcHVzaCh4KzEseSk7CiAgICAgICAgICAgICAgICBlbmQ7CgogICAgICAgICAgICBpZiB4K3k+MjAwIHRoZW4gYmVnaW4gd3JpdGVsbigtMSk7IGV4aXQ7IGVuZDsKICAgICAgICBlbmQ7CiAgICAgICAgd3JpdGVsbigtMSk7CmVuZDsKcHJvY2VkdXJlIGluaXQ7CnZhciAgICAgaSxqOmludGVnZXI7CmJlZ2luCiAgICBmb3IgaTo9MCB0byAyMDAgZG8KICAgICAgICBmb3Igajo9MCB0byAyMDAgZG8gZltpLGpdOj0tMTsKCiAgICAgICAgZlswLDBdOj0wOwplbmQ7CnByb2NlZHVyZSBtYWluOwp2YXIgICAgIGk6aW50ZWdlcjsKYmVnaW4KICAgIGFzc2lnbihpbnB1dCxmaSk7cmVzZXQoaW5wdXQpOwogICAgYXNzaWduKG91dHB1dCxmbyk7cmV3cml0ZShvdXRwdXQpOwoKICAgIHJlYWRsbih0KTsKICAgIGZvciBpOj0xIHRvIHQgZG8KICAgICAgICBiZWdpbgoKICAgICAgICAgICAgcmVhZGxuKG4pOwogICAgICAgICAgICBpbml0OwogICAgICAgICAgICB4dWx5OwoKICAgICAgICBlbmQ7CgogICAgY2xvc2UoaW5wdXQpO2Nsb3NlKG91dHB1dCk7CmVuZDsKYmVnaW4KICAgIG1haW47CmVuZC4K