Cod sursa(job #654704)
var f,g:text;
i,j,n,nc,nrp:longint;
p:array[1..30] of byte;
procedure afisare;
var l:longint;
begin
if p[n]=n then begin close(g); halt; end;
for l:=1 to nc do begin
for i:=1 to n do if p[i]=l then write(g,i, ' ');
writeln(g);
end;
end;
procedure gen(k:longint);
begin
if k-1=n then afisare else begin
for j:=1 to nc do begin
p[k]:=j;
gen(k+1);
end;
inc(nc);
p[k]:=nc;
gen(k+1);
dec(nc);
end;
end;
begin
assigN(f,'submultimi.in');reset(f);
assign(g,'submultimi.out');rewrite(g);
readln(f,n);
writeln;
gen(1);
close(g);
end.