program multimi2;
var f,g:text;
n,i,nr1,nr2:longint;
m1,m2:array[1..500010] of longint;
bufin,bufout:array[1..65000] of byte;
begin
assign (f,'multimi2.in'); reset (f);
assign (g,'multimi2.out'); rewrite (G);
settextbuf (F,bufin); settextbuf (g,bufout);
read (f,n);
if n mod 4=0 then
begin
writeln (G,0);
i:=1;
while i<=n do
begin
inc (nr1,2);
m1[nr1-1]:=i; m1[nr1]:=i+3;
inc (nr2,2);
m2[nr2-1]:=i+1; m2[nr2]:=i+2;
i:=i+4;
end;
writeln (g,nr1);
for i:=1 to nr1 do
write (g,m1[i],' ');
writeln (g);
writeln (g,nr2);
for i:=1 to nr2 do
write (g,m2[i],' ');
end
else
if n mod 4=1 then
begin
writeln (g,1);
i:=2;
nr1:=1; m1[nr1]:=1;
while i<=n do
begin
inc (nr1,2);
m1[nr1-1]:=i; m1[nr1]:=i+3;
inc (nr2,2);
m2[nr2-1]:=i+1; m2[nr2]:=i+2;
inc (i,4);
end;
writeln (G,nr1);
for i:=1 to nr1 do
write (g,m1[i], ' ');
writeln (g);
writeln (g,nr2);
for i:=1 to nr2 do
writeln (g,m2[i], ' ');
end
else
if n mod 4=2 then
begin
writeln (G,1);
i:=3; nr1:=1; nr2:=1;
m1[nr1]:=1; m2[nr2]:=2;
while i<=n do
begin
inc (nr1,2);
m1[nr1-1]:=i; m1[nr1]:=i+3;
inc (nr2,2);
m2[nr2-1]:=i+1; m2[nr2]:=i+2;
inc (i,4);
end;
writeln (g,nr1);
for i:=1 to nr1 do
write (g,m1[i],' ');
writeln (g);
writeln (g,nr2);
for i:=1 to nr2 do
write (G,m2[i], ' ');
end
else
if n mod 4=3 then
begin
writeln (G,0);
nr1:=2; m1[1]:=1; m1[2]:=2; nr2:=1; m2[1]:=3;
i:=4;
while i<=n do
begin
inc (nr1,2);
m1[nr1-1]:=i; m1[nr1]:=i+3;
inc (nr2,2);
m2[nr2-1]:=i+1; m2[nr2]:=i+2;
inc (i,4);
end;
writeln (G,nr1);
for i:=1 to nr1 do
write (g,m1[i],' ');
writeln (G);
writeln (G,nr2);
for i:=1 to nr2 do
write (g,m2[i], ' ');
end;
close (f); close (g);
end.