var s:array[1..13]of integer;
a:array[1..13]of boolean;
b:array[1..27]of boolean;
c:array[-13..13]of boolean;
n:integer;
sum:longint;
procedure place(i:integer);
var j:integer;
procedure print;
var x:integer;
begin
for x:=1 to n do
begin
write(s[x],' ');
end;
writeln;
end;
begin
if(i>n)then
begin
if(sum<3)then print;
inc(sum);
exit;
end;
if(i<=n)then
begin
for j:=1 to n do
begin
if((a[j]=true)and(b[j+i]=true)and(c[j-i]=true))then
begin
s[i]:=j;
a[j]:=false;
b[j+i]:=false;
c[j-i]:=false;
place(i+1);
a[j]:=true;
b[j+i]:=true;
c[j-i]:=true;
end;
end;
end;
end;
begin
read(n);
fillchar(a,sizeof(a),true);
fillchar(b,sizeof(b),true);
fillchar(c,sizeof(c),true);
sum:=0;
place(1);
write(sum);
end.