const fileout = 'perm.txt';
      MAXN = 100;

var fout :text;
    n , i :integer;
    permut , position :array [ 1..MAXN ] of integer;
    dir :array [ 1..MAXN ] of integer;

procedure PrintPermutation;
begin

for i := 1 to n do
  write(fout, ' ', permut[i] );

writeln(fout);
end;

procedure Switch ( p1 , p2 :integer);

var xch :integer;

begin

xch := permut[ p1 ];
permut[ p1 ] := permut[ p2 ];
permut[ p2 ] := xch;

position[ permut[ p1 ] ] := p1;
position[ permut[ p2 ] ] := p2;
end;

procedure GeneratePermutation ( nn :integer);

var ii :integer;

begin

if (nn = n + 1) then
  PrintPermutation
else
  begin

    GeneratePermutation ( nn + 1 );

    for ii := 1 to nn - 1 do
      begin

	Switch ( position[nn] , position[nn]+dir[nn] );

	GeneratePermutation ( nn + 1 );

      end;

    dir[nn]:=-dir[nn];
  end;

end;

begin
readln(n);

for i := 1 to n do
  begin

    permut[i] := i;
    position[i] := i;
    dir[i] := -1;

  end;

assign( fout , fileout);
rewrite( fout );

GeneratePermutation (1);

close ( fout );
end.