#include int get_piece(int n, int *out) { int v = 0; int p, x, y, z; int i; for (i = 0; i < n; i++) { if (scanf(" (%d %d %d %d)", &p, &x, &y, &z) != 4) return 0; v |= 1 << (x * 9 + y * 3 + z); *out = x; out++; *out = y; out++; *out = z; out++; } return v; } int fix_solution(void) { int p1, p2, p3, p4, p5, p6, p7; int out[3*27]; int i; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; if (getchar() == EOF) return 0; p1 = get_piece(3, &out[0]); p2 = get_piece(4, &out[3*3]); p3 = get_piece(4, &out[3*7]); p4 = get_piece(4, &out[3*11]); p5 = get_piece(4, &out[3*15]); p6 = get_piece(4, &out[3*19]); p7 = get_piece(4, &out[3*23]); if (!p1 || !p2 || !p3 || !p4 || !p5 || !p6 || !p7) return 0; for (i = 0; i < 3*27; i++) printf("%d ", out[i]); printf("+"); printf("%x %x %x %x %x %x %x\n", p1, p2, p3, p4, p5, p6, p7); if (getchar() == EOF) return 0; return 1; } int main(void) { while (fix_solution()); return 0; }