program multimi;
var i,c,sc,n:longint;
f,g:text;
begin
assign(f,'multimi2.in');
reset(f);
assign(g,'multimi2.out');
rewrite(g);
read(f,n);
if n mod 4=0 then
begin {}
writeln(g,'0');
writeln(g,n div 2);
for i:=1 to n div 2 do
if i mod 2=1 then write(g,i,' ',n-i+1,' ');
writeln(g);
writeln(g,n div 2);
for i:=1 to n div 2 do
if i mod 2=0 then write(g,i,' ',n-i+1,' ');
end; {}
if (n mod 4=2) and (n>2) then {}
begin
writeln(g,'1');
writeln(g,n div 2);
write(g,(n-1) div 2+2,' ');
for i:=1 to (n-1) div 2 do
if i mod 2=1 then write(g,i,' ',n-i+1,' ');
writeln(g);
writeln(g,n div 2);
write(g,(n-1) div 2+1,' ');
for i:=1 to (n-1) div 2 do
if i mod 2=0 then write(g,i,' ',n-i+1,' ');
end;
if n mod 4=1 then {}
begin
writeln(g,'1');
writeln(g,(n-1) div 2+1);
sc:=(n-1) div 2;
write(g,sc+1,' ');
c:=0;
for i:=1 to (n-1) div 2 do
if (i mod 2=1) and (c<sc-1) then begin
write(g,i+1,' ',n-i+1,' ');
inc(c,2);
end
else
if (i mod 2=1) then begin
write(g,i,' ',n-i+1,' ');
inc(c,2);
end;
c:=0;
writeln(g);
writeln(g,(n-1) div 2);
for i:=1 to (n-1) div 2 do
if (i mod 2=0) and (c<sc-1) then begin
write(g,i-1,' ',n-i+1,' ');
inc(c,2);
end
else
if (i mod 2=0) then begin
write(g,i,' ',n-i+1,' ');
inc(c,2);
end;
end; {}
if (n mod 4=3) and (n>3) then {}
begin
writeln(g,'0');
writeln(g,(n-1) div 2+1);
sc:=(n-1) div 2-1;
for i:=(n-1) div 2+1 downto 1 do
if (i mod 2=1) and (c<(sc-1) div 2) then
begin
write(g,i-1,' ',n-i+1,' ');
c:=c+1;
end
else
if (i mod 2=1) then
begin
write(g,i,' ',n-i+1,' ');
c:=c+1;
end;
writeln(g);
writeln(g,(n-1) div 2);
c:=0;
for i:=(n-1) div 2+1 downto 1 do
if (i mod 2=0) and (c<(sc-1) div 2) then
begin
write(g,i+1,' ',n-i+1,' ');
c:=c+1;
end
else
if (i mod 2=0) then
begin
write(g,i,' ',n-i+1,' ');
c:=c+1;
end;
end;
if n=2 then
begin
writeln(g,'1');
writeln(g,'1');
writeln(g,'1');
writeln(g,'1');
writeln(g,'2');
end;
if n=3 then
begin
writeln(g,'0');
writeln(g,'2');
writeln(g,'1 2');
writeln(g,'1');
writeln(g,'3');
end;
close(f);
close(g);
end.