uses math; type long=array[1..1000001] of byte; var ar,y,z,x:long; a,c,d,b:integer; w,nx,ny,nz,k:integer; Procedure Sum(var x,y,z:long; var nx,ny,nz:integer); var p,q,nl,i:integer; Begin If nx>ny then nl:=nx else nl:=ny; p:=0; For i:=1 to nl do Begin q:=x[i]+y[i]+p; z[i]:=q mod 10; p:=q div 10; End; If p=1 then Begin nz:=nl+1; z[nz]:=1; End else nz:=nl; End; begin nx:=200; ny:=200; readln(k); a:=1; For b:=1 to k do Begin repeat inc(d); if a>b then begin ar[d]:=a div b; a:=a mod b; end; a:=a*10; until (a=0) or (d=200); Sum(ar,x,z,nx,ny,nz); x:=z; End; For w:=nz downto 1 do Write(z[w]); end.