#include <cstdio>
const int T1[] = {0, 1, 1, 2};
const int T2[] = {0, 0, 1, 1};
const int M1[4][2] = {{}, {1}, {1}, {1, 2}};
const int M2[4][2] = {{}, {}, {2}, {3}};
int main(void) {
FILE *fin = fopen("multimi2.in", "rt");
FILE *fout = fopen("multimi2.out", "wt");
int N, t, NR, i, s, e;
fscanf(fin, " %d", &N);
t = N % 4;
fprintf(fout, (t == 1 || t == 2) ? "1\n" : "0\n");
NR = (N - t) >> 1;
fprintf(fout, "%d\n", NR + T1[t]);
for (i = 0; i < T1[t]; ++i)
fprintf(fout, "%d ", M1[t][i]);
for (s = t + 1, e = N; s < e; s += 2, e -= 2)
fprintf(fout, "%d %d ", s, e);
fprintf(fout, "\n");
fprintf(fout, "%d\n", NR + T2[t]);
for (i = 0; i < T2[t]; ++i)
fprintf(fout, "%d ", M2[t][i]);
for (s = t + 2, e = N - 1; s < e; s += 2, e -= 2)
fprintf(fout, "%d %d ", s, e);
fprintf(fout, "\n");
fclose(fin);
fclose(fout);
return 0;
}