program multimi;
var f,g:text;
n,i,ii,nn,j,jj:longint;
begin
assign(f,'multimi2.in'); reset(f);
assign(g,'multimi2.out'); rewrite(g);
readln(f,n);
if (n mod 2=0) and (n div 2 mod 2=0) then
begin
writeln(g,n div 2);
for i:=1 to n div 2 div 2 do
write(g,i,' ',n-i+1,' ');
writeln(g);
writeln(g,n div 2);
for i:=n div 2 div 2+1 to n div 2 do
write(g,i,' ',n-i+1,' ');
end;
if (n mod 2=0) and (n div 2 mod 2=1) then
begin
writeln(g,n div 2);
for i:=1 to n div 2 div 2 do
write(g,i,' ',n-i+1,' ');
write(g,i+i+1{+1});
writeln(g);
writeln(g,n div 2);
write(g,i+i{+2}+2,' ');
ii:=i;
for i:=ii+1 {+ 3} to n div 2-1 do { n div 2 div 2+3 to n div 2 do }
write(g,i,' ',n-i+1,' ');
end;
if n mod 2=1 then
begin
if n div 2 mod 2=1 then
begin
nn:=n;
writeln(g,n div 2);
while n>=1 do
begin
j:=j+1;
write(g,n,' ');
if j mod 2=0 then n:=n-1;
if j mod 2=1 then n:=n-3;
end;
n:=nn-1;
j:=0;
writeln(g);
writeln(g,nn div 2+1);
while n>=1 do
begin
j:=j+1;
write(g,n,' ');
if j mod 2=0 then n:=n-3;
if j mod 2=1 then n:=n-1;
end;
end;
if n div 2 mod 2=0 then
begin
nn:=n;
writeln(g,n div 2+1);
while n>=1 do
begin
j:=j+1;
write(g,n,' ');
if j mod 2=0 then n:=n-1;
if j mod 2=1 then n:=n-3;
end;
n:=nn-1;
j:=0;
writeln(g);
writeln(g,nn div 2);
while n>=1 do
begin
j:=j+1;
write(g,n,' ');
if j mod 2=0 then n:=n-3;
if j mod 2=1 then n:=n-1;
end;
end;
end;
close(f);
close(g);
end.