//队列+宽搜
include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5;
int read()
{
int x=0,fl=1; char ch=getchar();
while (ch<'0' || ch>'9') { if (ch=='-') fl=-1; ch=getchar();}
while (ch>='0' && ch<='9') { x=x*10+(ch-'0'); ch=getchar(); }
return x*fl;
}
int vis[maxn],t,n,m,k;
struct data1
{
int f,zhi;
}a[maxn];
bool pd(int n)
{
while(n)
{
if (n%10!=1 & n%10!=0) return 0;
}
return 1;
}
void pr(int x)
{
if (a[x].f!=-1) pr(a[x].f);
cout<<a[x].zhi;
if (x==0) cout<<endl;
}
void bfs()
{
vis[1]=1;
a[1].f = -1;
a[1].zhi = 1;
queue<int> q;
q=queue<int>();//清空
q.push(1);
while(!q.empty())
{
k=q.front();
q.pop();
if(vis[k*10%n]==0)
{ t=k*10%n;
a[t].f=k;
a[t].zhi=0;
if(t==0){ pr(0);break;}
vis[t] = 1;
q.push(t);
}
if(vis[k*10%n+1]==0)
{ t=(k*10+1)%n;
a[t].f=k;
a[t].zhi=1;
if(t==0){ pr(0);break;}
vis[t] = 1;
q.push(t);
}
}
}
signed main()
{
m=read();
while(m>0)
{
memset(vis, 0, sizeof(vis));
n=read();
bfs();
m=m-1;
}
return 0;
}