Const
     lon= 9;
     max= 10;
     carry= 1000000000;

Type
    num_grande= record
              tam: longint;
              bloq: array [0..max -1] of longint;
              end;

Var
   i,n: longint;
   r: num_grande;

Procedure Imprime(var x: num_grande);
          var i: longint;
              s,t: ansistring;
          begin
          str(x.bloq[x.tam -1], s);
          for i:= x.tam -2 downto 0 do
              begin
              str(x.bloq[i]:lon, t);
              s:= s + t;
              end;
          for i:= 1 to length(s) do
              if (s[i]= ' ') then s[i]:= '0';
          writeln(output,s);
          end;

Procedure Inicia_Cero(var x: num_grande);
          begin
          x.tam:= 1;
          fillchar(x.bloq, sizeof(x.bloq), 0);
          end;

Procedure Inicia_Numero(var x: num_grande; n: longint);
          begin
          x.tam:= 1;
          fillchar(x.bloq, sizeof(x.bloq), 0);
          x.bloq[0]:= n;
          end;

Procedure Shift_L(var x: num_grande);
          var i: longint;
          begin
          for i:= x.tam -1 downto 0 do
              begin
              x.bloq[i]:= x.bloq[i] shl 1;
              if (x.bloq[i]>= carry) then
                 begin
                 Inc(x.bloq[i+1]);
                 Dec(x.bloq[i], carry);
                 end;
              end;
          if (x.bloq[x.tam]<> 0) then
             Inc(x.tam);
          end;

Function  Suma(x,y: num_grande): num_grande;
          var i: longint;
          begin
          if (y.tam > x.tam) then
             x.tam:= y.tam;
          for i:= 0 to x.tam -1 do
              begin
              Inc(x.bloq[i], y.bloq[i]);
              if (x.bloq[i]>= carry) then
                 begin
                 Inc(x.bloq[i+1]);
                 Dec(x.bloq[i],carry);
                 end;
              end;
          if (x.tam< max) and (x.bloq[x.tam]<> 0) then
             Inc(x.tam);
          Suma:= x;
          end;

Function  Multiplica(x: longint; y: num_grande): num_grande;
          var r: num_grande;
          begin
          Inicia_cero(r);
          while (x <> 0) do
                begin
                if odd(x) then
                   r:= suma(r,y);
                x:= x shr 1;
                Shift_L(y);
                end;
          Multiplica:= r;
          end;

Begin
     readln(input, n);
     n:= n div 2;
     inicia_numero(r, 1);
     for i:= 2 to n do
         r:= multiplica(2*i-1, r);
     imprime(r);
End.

