Var S,n:Ansistring;
A,B:array[1..50] Of String;
Procedure Init;
Var i:integer;
ch:char;
st:string;
Begin
A[1]:='9';
A[2]:='189';
A[3]:='2889';
A[4]:='38889';
A[5]:='488889';
st:='';
ch:='9';
For i:=1 to 30 do
Begin
B[i]:=st+ch;
st:=B[i];
End;
Readln(n);
End;
Function Tru(a,b:Ansistring):Ansistring;
Var s:Ansistring;
i,t:Longint;
Begin
While length(a)<length(b) do a:='0'+a;
While length(b)<length(a) do b:='0'+b;
s:=''; t:=0;
For i:=length(a) downto 1 do
Begin
t:=ord(a[i])-ord(b[i])+t;
If t<0 then
Begin
Inc(t,10);
s:=chr(t+48)+s;
t:=-1;
End
Else
Begin
s:=chr(t+48)+s;
t:=0;
End;
End;
While (length(s)>1) and (s[1]='0') do Delete(s,1,1);
Exit(s);
End;
Function Cong(a,b:Ansistring):Ansistring;
Var s:Ansistring;
t,i:longint;
Begin
While length(a)<length(b) do a:='0'+a;
While length(b)<length(a) do b:='0'+b;
s:='';
t:=0;
For i:=length(a) downto 1 do
Begin
t:=t+ord(a[i])+ord(b[i])-96;
s:=chr(t mod 10 +48)+s;
t:=t div 10;
End;
If t>0 then s:=chr(t+48)+s;
Exit(s);
End;
Procedure Install;
Var j:Longint;
st,dcs,t,scs,x:Ansistring;
s:string;
Begin
St:=n;
dcs:=A[length(st)];
writeln(dcs,'dcs');
t:=B[length(st)];
j:=length(st);
Str(j,x);
scs:=x;
//writeln(scs,'scs');
//writeln(t,'t');
Repeat
t:=Tru(t,'1');
dcs:=Tru(dcs,scs);
// writeln(t,'t');
// writeln(dcs,' dcs');
Until t=n;
writeln(dcs,'--');
End;
BEGIN
Init;
Install;
readln
end.