{
ID:hbtssam1
PROG:checker
LANG:PASCAL
}
Var
x:array[1..13] of integer;
a,b,c:array[-13..26] of boolean;
sum:longint;
n:integer;
Procedure try(i:integer);
var
j,k:integer;
begin
for j:=1 to n do
if a[j] and b[i+j] and c[i-j] then
begin
x[i]:=j;
a[j]:=false;
b[i+j]:=false;
c[i-j]:=false;
if i<n then try(i+1) else
begin
if sum<3 then
begin
write(x[1]);
for k:=2 to n do write(' ',x[k]);
writeln;
end;
inc(sum);
if sum>23456 then begin inc(sum,50255); exit;end;
end;
a[j]:=true;
b[i+j]:=true;
c[i-j]:=true;
end;
end;
Begin
fillchar(a,sizeof(a),true);
fillchar(b,sizeof(b),true);
fillchar(c,sizeof©,true);
sum:=0;
assign(input,'checker.in');
assign(output,'checker.out');
reset(input);
rewrite(output);
readln(n);
try(1);
writeln(sum);
close(output);
End.
ID:hbtssam1
PROG:checker
LANG:PASCAL
}
Var
x:array[1..13] of integer;
a,b,c:array[-13..26] of boolean;
sum:longint;
n:integer;
Procedure try(i:integer);
var
j,k:integer;
begin
for j:=1 to n do
if a[j] and b[i+j] and c[i-j] then
begin
x[i]:=j;
a[j]:=false;
b[i+j]:=false;
c[i-j]:=false;
if i<n then try(i+1) else
begin
if sum<3 then
begin
write(x[1]);
for k:=2 to n do write(' ',x[k]);
writeln;
end;
inc(sum);
if sum>23456 then begin inc(sum,50255); exit;end;
end;
a[j]:=true;
b[i+j]:=true;
c[i-j]:=true;
end;
end;
Begin
fillchar(a,sizeof(a),true);
fillchar(b,sizeof(b),true);
fillchar(c,sizeof©,true);
sum:=0;
assign(input,'checker.in');
assign(output,'checker.out');
reset(input);
rewrite(output);
readln(n);
try(1);
writeln(sum);
close(output);
End.