#include int parts[300] = {0}; int n, N; int main(void) { int a, b, c; scanf("%d %d %d", &a, &b, &c); n = a + b + c; int i; for(i = 0; i < n; i++)//全てのパーツを不明にする { parts[i] = 2; } scanf("%d", &N); int x[1000], y[1000], z[1000], r[1000]; int d; for(i = 0; i < N; i++) { scanf("%d %d %d %d", &x[i], &y[i], &z[i], &r[i]); x[i]--; y[i]--; z[i]--; } printf("\n"); for(i = 0; i < n; i++) { printf("%d\n", parts[i]); } for(i = 0; i < N; i++) { if(r[i] == 1)//検査結果が正常の場合、全てのパーツが正常 { parts[x[i]] = 1; parts[y[i]] = 1; parts[z[i]] = 1; continue; } } printf("\n"); for(i = 0; i < n; i++) { printf("%d\n", parts[i]); } int ok; for(i = 0; i < N; i++)//故障パーツのチェック { ok = 0; if(parts[x[i]] == 1) ok++; if(parts[y[i]] == 1) ok++; if(parts[z[i]] == 1) ok++; if(ok == 2)//検査結果が異常で、2つのパーツが正常なら、残りのパーツが異常 { if(parts[x[i]] != 1) parts[x[i]] = 0; if(parts[y[i]] != 1) parts[y[i]] = 0; if(parts[z[i]] != 1) parts[z[i]] = 0; } } printf("\n"); for(i = 0; i < n; i++) { printf("%d\n", parts[i]); } return 0; }