# include <stdio.h>
const long int MAXN=1000000;
long int n;
char v[MAXN+1];
void citire()
{
FILE *f=fopen("multimi2.in","r");
fscanf(f,"%ld",&n);
fcloseall();
}
int main()
{
citire();
FILE *g=fopen("multimi2.out","w");
long int i,j,ok;
if (n%4==0)
{
i=1;j=n;
while (i<=j) {v[i]=v[j]=1;i+=2;j-=2;}
fprintf(g,"0\n%ld\n",n/2);
ok=0;
for (i=1;i<=n;i++) if (v[i])
{
if (ok) fprintf(g," "); ok=1;
fprintf(g,"%ld",i);
}
fprintf(g,"\n");
fprintf(g,"%ld\n",n/2);
ok=0;
for (i=1;i<=n;i++) if (!v[i])
{
if (ok) fprintf(g," "); ok=1;
fprintf(g,"%ld",i);
}
fprintf(g,"\n");
}
if (n%4==3)
{
fprintf(g,"0\n%ld\n",(n-3)/2+2);
fprintf(g,"1 2");
i=4;j=n;
while (i<=j)
{
v[i]=v[j]=1;
i+=2;j-=2;
}
for (i=4;i<=n;i++) if (v[i]) fprintf(g," %ld",i);
fprintf(g,"\n");
fprintf(g,"%ld\n",(n-3)/2+1);
fprintf(g,"3");
for (i=4;i<=n;i++) if (!v[i]) fprintf(g," %ld",i);
fprintf(g,"\n");
}
if (n%4==1)
{
fprintf(g,"1\n%ld\n",n/2+1);
fprintf(g,"1");
i=2;j=n;
while (i<=j)
{
v[i]=v[j]=1;
i+=2;j-=2;
}
for (i=2;i<=n;i++) if (v[i]) fprintf(g," %ld",i);
fprintf(g,"\n");
fprintf(g,"%ld\n",n/2);
fprintf(g,"3");
for (i=4;i<=n;i++) if (!v[i]) fprintf(g," %ld",i);
fprintf(g,"\n");
}
if (n%4==2)
{
fprintf(g,"1\n%ld\n",n/2);
fprintf(g,"1");
i=3;j=n;
while (i<=j)
{
v[i]=v[j]=1;
i+=2;j-=2;
}
for (i=3;i<=n;i++) if (v[i]) fprintf(g," %ld",i);
fprintf(g,"\n");
fprintf(g,"%ld\n",n/2);
fprintf(g,"2");
for (i=3;i<=n;i++) if (!v[i]) fprintf(g," %ld",i);
fprintf(g,"\n");
}
fcloseall();
return 0;
}