从低位开始搜。
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cmath>
using namespace std;
#include <queue>
#include <stack>
#include <set>
#include <vector>
#include <deque>
#include <map>
#define cler(arr, val) memset(arr, val, sizeof(arr))
typedef long long LL;
const int MAXN = 120000;
const int MAXM = 140000;
const int INF = 0x3f3f3f3f;
const int mod = 1000000007;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
char s[4]={"012"};
int num[MAXN*10];
struct node
{
string s;
int mod;
};
int n;
string bfs()
{
queue<node>q;
node p;
p.s="";p.mod=0;
q.push(p);
while(!q.empty())
{
node x=q.front();
q.pop();
int len=x.s.length();
if(len>30) break;
for(int i=1;i<=2;i++)
{
node y;
y.mod=(x.mod*10+i)%n;
if(num[y.mod]) continue;
num[y.mod]=1;
y.s=x.s+s[i];
if(y.mod==0)
{
return y.s;
}
q.push(y);
}
}
return "x";
}
int main()
{
while(cin>>n)
{
string c=bfs();
if(c=="x")
cout<<"Impossible"<<endl;
else cout<<c<<endl;
}
return 0;
}