program dame;
var x:array[1..13] of integer;
n,nr:integer;
ok:boolean;
function cont(k:integer):boolean;
var i:integer;
begin
cont:=true;
for i:=1 to k-1 do
if (x[i]=x[k]) or (abs(i-k)=abs(x[i]-x[k])) then
begin
cont:=false;
break;
end;
end;
procedure tipar(k:integer);
var i:integer;
begin
if ok then
begin
for i:=1 to k do
write(x[i],' ');
writeln;
ok:=false;
end;
inc(nr);
end;
procedure bkt;
var k:integer;
begin
k:=1;
x[k]:=0;
while k>0 do
if x[k]<n then
begin
x[k]:=x[k]+1;
if cont(k) then
if k=n then
tipar(k)
else
begin
k:=k+1;
x[k]:=0;
end;
end
else
dec(k);
end;
begin
assign(input,'damesah.in'); reset(input);
assign(output,'damesah.out'); rewrite(output);
readln(n); nr:=0; ok:=true;
bkt;
writeln(nr);
close(input); close(output);
end.