1 var a,b:array[0..9]of longint;
2 pt,i,n:longint;
3 s,q,ans,m,max:int64;
4 p:boolean;
5
6 procedure dfs(k,g,t:longint); //g shengyugeshu t shuweihe
7 var i,tt:longint;
8 flag:boolean;
9 q:int64;
10
11 begin
12 if p then exit;
13
14 if k=10 then
15 begin
16 if g>0 then exit;
17 q:=t*m-s; ans:=q;
18 if q>max then exit;
19 if q<0 then exit;
20 fillchar(b,sizeof(b),0); tt:=n;
21 while q>0 do
22 begin
23 inc(b[q mod 10]);
24 q:=q div 10; dec(tt);
25 end;
26 b[0]:=b[0]+tt;
27 flag:=true;
28 for i:=0 to 9 do
29 if a[i]<>b[i] then begin flag:=false; break; end;
30 if flag then begin pt:=tt; p:=true; end;
31 exit;
32 end;
33
34 if g=0 then
35 begin
36 dfs(10,0,t);
37 exit;
38 end;
39
40 {if k=9 then
41 begin
42 a[9]:=g;
43 dfs(10,0,t+g*9);
44 a[9]:=0;
45 exit;
46 end; }
47
48 for i:=0 to g do
49 begin
50 a[k]:=i;
51 dfs(k+1,g-i,t+k*i);
52 a[k]:=0;
53 if p then exit;
54 end;
55 end;
56
57 begin
58
59 readln(n);
60 for i:=1 to n do m:=m*10+1;
61 for i:=1 to n-1 do m:=m*i;
62 readln(s);
63 for i:=1 to n do max:=max*10+9;
64 p:=false;
65 dfs(0,n,0);
66 for i:=1 to pt do write(0);
67 write(ans);
68
69 end.