voidadd(int x, int y, int z, int v){ int tmp1 = y; int tmp2 = z; while (x <= n) { y = tmp1; while (y <= n) { z = tmp2; while (z <= n) { tree[x][y][z] += v; z += z & -z; } y += y & -y; } x += x & -x; } }
intread(int x, int y, int z){ int tmp1 = y; int tmp2 = z; int sum = 0; while (x) { y = tmp1; while (y) { z = tmp2; while (z) { sum += tree[x][y][z]; z -= z & -z; } y -= y & -y; } x -= x & -x; } return sum; }
intmain(){ int m; int x1, x2, y1, y2, z1, z2, op; while (scanf("%d%d", &n, &m) != EOF) { for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) for (int k = 1; k <= n; k++) tree[i][j][k] = 0; for (int i = 0; i < m; i++) { scanf("%d", &op); if (op) { scanf("%d%d%d", &x1, &y1, &z1); scanf("%d%d%d", &x2, &y2, &z2); add(x1, y1, z1, 1); add(x2 + 1, y1, z1, -1); add(x1, y2 + 1, z1, -1); add(x1, y1, z2 + 1, -1); add(x2 + 1, y2 + 1, z1, 1); add(x2 + 1, y1, z2 + 1, 1); add(x1, y2 + 1, z2 + 1, 1); add(x2 + 1, y2 + 1, z2 + 1, -1); } else { scanf("%d%d%d", &x1, &y1, &z1); printf("%d\n", read(x1, y1, z1) % 2); } } } return0; }