{
TASK:n23
LANG:PASCAL
}


var
  a,b: array[1..10000] of Byte;
  n,k: Integer;
  m,i,j,t: Longint;
  sum: Int64;
  fl: Boolean;
  ind,pom,min,ind2: Integer;


begin
  readln(n);
  fl:= false;
{  if n=11 then writeln('223232')
  else}
  for m:= 1 to 1000 do
  begin
    if fl=true then break;
    for j:= m downto 1 do
    begin
      for i:= 1 to j do
        a[i]:= 2;
      for i:= j+1 to m do
        a[i]:= 3;

    repeat
      k:= 1; sum:= 0;
      if fl=true then break;
      for i:= m downto 1 do
      begin
        sum:= sum+a[i]*k;
      k:= k*10
      end;
      for i:= 1 to n do
      begin
        if sum mod 2 <>0 then
          break
        else
          sum:= sum div 2;
          if i=n  then
          begin
            for i:= 1 to m do
             b[i]:= a[i];
            t:= m;
           fl:= true;
          end;
        end;
  
        i:= m; ind:= 0;
       repeat
         if a[i-1]<a[i] then
           ind:= i-1
         else i:= i-1;
       until (i<=1) or (ind<>0);
  
        i:= ind+1;

       if (ind<>0) and  (i>=1) then
        begin
          min:= a[i]; ind2:= 0;
          repeat
           if (a[i]<=min) and (a[i]>=a[ind]) then
             begin
              ind2:= i; min:= a[i];
            end;
            i:= i+1;
          until (i>m) or (ind2<>0);
          pom:= a[ind]; a[ind]:= a[ind2]; a[ind2]:= pom;
        ind:= ind+1; i:= m;
        repeat
          pom:= a[i]; a[i]:= a[ind]; a[ind]:= pom;
          i:= i-1; ind:= ind+1;
        until i<=ind;
        end;
      until (ind=0) or (fl=true);
    end;
  end;
  if fl=true then
    for i:= 1 to t do
      write(b[i]);
  writeln;
end.