program multimi2;
var n,i:longint;
G:TEXT;
procedure citire;
var f:text;
begin
assign(f,'multimi2.in');
reset(f);
read(f,n);
close(f);
end;
begin
citire;
assign(g,'multimi2.out');
rewrite(g);
if n = 2 then
begin
write(g,1);
writeln(g);write(g,1);
writeln(g);write(g,1);
writeln(g);write(g,1);
writeln(g);write(g,2);
end else
if n mod 2=0 then
begin
if ((n*(n+1)) div 2) mod 2=0 then
begin
write(g,0);writeln(g);
write(g,n div 2);writeln(g);
for i:=1 to (n div 4) do
begin
write(g,i,' ');
write(g,n+1-i, ' ');
end;
writeln(g);write(g,n div 2);writeln(g);
for i:=(n div 4)+1 to (n div 2) do
begin
write(g,i,' ');
write(g,n+1-i,' ');
end;
end else
if ((n*(n+1)) div 2) mod 2<>0 then
begin
write(g,1);writeln(g);
write(g,n div 2);writeln(G);
for i:=1 to (n div 4) do
begin
write(g,i,' ');
write(g,n+1-i, ' ');
end;
write(g,n div 2);
writeln(g);write(g,n div 2);writeln(g);
for i:=(n div 4)+1 to (n div 2)-1 do
begin
write(g,i,' ');
write(g,n+1-i,' ');
end;
write(g,(n div 2) +1);
end;
end
else
if n mod 2<>0 then
begin
IF ((n*(n+1)) div 2) mod 2 = 0 then
begin
write(g,0);
writeln(g);write(g,(n div 2)+1);writeln(g);
write(g,1,' ');write(g,n-1,' ');
for i:=2 to ((n-3) div 2)+1 do
if i mod 2=0 then
begin
write(g,i,' ');
write(g,n-i,' ');
end;
writeln(g);write(g,n div 2);
writeln(g);write(g,n,' ');
for i:=2 to ((n-3) div 2)+1 do
if i mod 2<>0 then
begin
write(g,i,' ');
write(g,n-i,' ');
end;
end
else
IF ((n*(n+1)) div 2) mod 2 <> 0 then
begin
write(g,1);
writeln(g);write(g,(n div 2)+1);
writeln(g);write(g,1,' ');write(g,n-1,' ');write(g,n div 2,' ');
for i:= 2 to ((n-3) div 2)-1 do
if i mod 2 =0 then
begin
write(g,i,' ');
write(g,n-i,' ');
end;
writeln(g);write(g,n div 2);
writeln(G);write(g,n, ' ');write(g,(n div 2)+1,' ');
for i:= 2 to ((n-3) div 2)-1 do
if i mod 2 <>0 then
begin
write(g,i,' ');
write(g,n-i,' ');
end;
end;
end;
closE(G);
end.