Cod sursa(job #461266)
#include <cstdio>
const char FIN[] = "multimi2.in", FOU[] = "multimi2.out";
int N;
int main()
{
freopen (FIN , "r" , stdin);
freopen (FOU , "w" , stdout);
scanf("%d", &N);
switch ( N & 3 )
{
case 0:
printf("0\n%d\n", N >> 1);
for (int i = 0; i < N >> 2 ; ++i)
printf("%d %d ", ( i << 2 ) + 1 , ( i << 2 ) + 4);
printf("\n%d\n", N >> 1);
for (int i = 0; i < N >> 2 ; ++i)
printf("%d %d ", ( i << 2 ) + 2 , ( i << 2 ) + 3);
break;
case 1:
printf("1\n%d\n", ( N >> 1 ) + 1);
printf("1 ");
for (int i = 0; i < N - 1 >> 2; ++i)
printf("%d %d ", ( i << 2 ) + 2, ( i << 2 ) + 5);
printf("\n%d\n", N >> 1);
for (int i = 0; i < N - 1 >> 2; ++i)
printf("%d %d ", ( i << 2 ) + 3, ( i << 2 ) + 4);
break;
case 2:
printf("1\n%d\n", N >> 1);
printf("1 ");
for (int i = 0; i < N - 2 >> 2; ++i)
printf("%d %d ", ( i << 2 ) + 3, ( i << 2 ) + 6);
printf("\n%d\n", N >> 1);
printf("2 ");
for (int i = 0; i < N - 2 >> 2; ++i)
printf("%d %d ", ( i << 2 ) + 4, ( i << 2 ) + 5);
break;
case 3:
printf("0\n%d\n", ( N >> 1 ) + 1);
printf("1 2 ");
for (int i = 0; i < N - 3 >> 2; ++i)
printf("%d %d ", ( i << 2 ) + 4, ( i << 2 ) + 7);
printf("\n%d\n", N >> 1);
printf("3 ");
for (int i = 0; i < N - 3 >> 2; ++i)
printf("%d %d ", ( i << 2 ) + 5, ( i << 2 ) + 6);
break;
}
return 0;
}