先把n小于4的情况直接罗列出来,再由n去模4,
如果为0或3,则相差为0,如果为1或2,则相差为1,
接着分为n/2组,再把分n是奇偶,如果是偶数,直接前后匹配输出,
如果是奇数,则先输出3,再把1-3的情况去除,从4-n中前后匹配输出
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(~scanf("%d",&n)){
if(n==2){
printf("1\n1 1\n");
continue;
}
if(n==3){
printf("0\n1 3\n");
continue;
}
if(n%4==0 || n%4==3)
{
printf("0\n");
}
else
printf("1\n");
printf("%d",n/2);
if(n%2==0){
for(int i=1;i<=n/2;i++)
{
if(i%2==1)
printf(" %d",i);
if(i%2==0)
printf(" %d",n-i+2);
}
}
else{
printf(" 3");
for(int i=1;i<=(n-3)/2;i++)
{
if(i%2==1)
printf(" %d",i+3);
if(i%2==0)
printf(" %d",n-i+2);
}
}
printf("\n");
}
}