A:array[1..30] of integer

Program Hoan_vi;
var n,dem:integer;
A:array[1..30] of integer;
B:array[1..30] of boolean;
procedure khoitao;
begin
fillchar(B,sizeof(B),true);
dem:=0;
end;
procedure input;
begin
write('Nhap so n = ');
readln(n);
end;
procedure print;
var i:integer;
begin
dem:=dem+1;
Writeln('Hoan vi thu ',dem,' : ');
for i:=1 to n do write(A[i]);
writeln;
end;
procedure thu(i:integer);
var j:integer;
begin
if (i>n) then print
else
begin
for j:=1 to n do
if b[j]=true then
begin
a[i]:=j;
b[j]:=false;
thu(i+1);
b[j]:=true;
end;
end;
end;
BEGIN
khoitao;
input;
thu(1);
END.