bfs
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
const int MAX = 100;
using namespace std;
struct Node
{
int mod;
int len;
bool s[MAX+2];
};
queue<Node> q;
bool visit[2*MAX+2];
void _bfs(int n)
{
while (!q.empty())
q.pop();
memset(visit, 0, sizeof(visit));
Node head;
Node next;
head.mod = 1 % n;
head.len = 1;
head.s[0] = 1;
q.push(head);
visit[head.mod] = true;
while (!q.empty())
{
head = q.front();
q.pop();
if (!head.mod)
{
for (int i = 0; i < head.len; i++)
printf("%d", head.s[i]);
putchar('\n');
return;
}
next = head;
if (!visit[next.mod = (head.mod * 10) % n])
{
next.s[next.len++] = 0;
visit[next.mod] = true;
q.push(next);
}
next = head;
if (!visit[next.mod = (head.mod * 10 + 1) % n] )
{
visit[next.mod] = true;
next.s[next.len++] = 1;
q.push(next);
}
}
}
int main()
{
int n;
while (scanf("%d", &n) && n)
_bfs(n);
return 0;
}