var rs:array[1..100] of longint;
used:array[1..100] of boolean;
var n:longint;
fin,fout:textfile;
procedure backtrack(step:longint);
var i,o,p:longint;
begin
if step=n+1 then begin
for i:=1 to n do
write(fout,rs[i],' ');
writeln(fout);
end
else begin
for i:=1 to n do begin
if not used[i] then begin
used[i]:=true;
rs[step]:=i;
backtrack(step+1);
used[i]:=false;
end;
end;
end;
end;
begin
assign(fin,'permutari.in'); reset(fin);
assign(fout,'permutari.out'); rewrite(fout);
read(fin,n);
backtrack(1);
close(fin);
close(fout);
end.