第6回日本情報オリンピック 予選

2006年12月17日
情報オリンピック日本委員会

問題
   品質検査

問題

あなたはある機械の製造工場で品質管理の責任者をしている. この機械には, 部品として電源とモーターとケーブルが必要である. 製造工場には電源が a 個, モーターが b 個, ケーブルが c 個あり, それぞれ 1 から a まで, a+1 から a+b まで, a+b+1 から a+b+c までの番号が付いている. 困ったことに, 部品の中に故障しているものがあるかもしれない. 工場ではどの部品が故障していてどの部品が正常であるかを知りたい.

そこで, 工場では次の方法で部品を検査した. 電源とモーターとケーブルを1つずつ持ってきてつなぎ, 動作させてみる. このとき, 3つの部品がすべて正常であるときは正しく動作して「合格」とわかる. 3つの中に故障している部品が1つでも入っているときは正しく動作しないので「不合格」とわかる. (工場で作っている機械はとても精密なので, 故障した部品がまざっているのに偶然正しく動作してしまうなどということは起きないのだ.)

あなたには検査結果のリストが渡される. 検査結果のリストの各行には, 検査に使った電源とモーターとケーブルの番号と, 検査が合格だったか不合格だったかが書かれている.

検査結果のリストが与えられたとき, すべての部品を, 検査結果から確実に故障しているとわかる部品と, 確実に正常とわかる部品と, 検査結果からは故障しているとも正常であるとも決まらない部品に分類するプログラムを作成せよ.

入力

入力ファイルの形式は以下の通りである.

1 行目には 3 個の整数が空白区切りで書かれており, 順に電源の個数 a, モーターの個数 b, ケーブルの個数 c を表す.
2 行目には 1 個の整数が書かれており, 検査結果のリストに含まれる検査の回数 N が書かれている.
続く N 行は検査結果のリストを表す. 各行には, 4 個の整数 i, j, k, r が1つの空白を区切りとして書かれており, 電源 i とモーター j とケーブル k をつないで検査した結果が, 「合格」 (r=1 のとき) か「不合格」 (r=0 のとき) だったことを表す.

a, b, c, N は 1 ≦ a, b, c ≦ 100, 1 ≦ N ≦ 1000 を満たす.

出力

提出する出力ファイルは以下の通りである. 出力ファイルは a+b+c 行からなる.

i 行目 (1 ≦ i ≦ a+b+c):

入出力例

入力例
2 2 2
4
2 4 5 0
2 3 6 0
1 4 5 0
2 3 5 1
 
出力例
2
1
1
0
1
0

※各入出力例のデータは, 右クリック等によりファイルに保存して利用可能です.