#include<iostream>
#include<algorithm>

using namespace std;

const int MAX_P = 301;
const int MAX_N = 1000;
int data[MAX_P];
int test[MAX_N][4];
int num;

void input(){
  for(int j = 0; j < num; j++){
    cin >> test[j][0] >> test[j][1] >> test[j][2] >> test[j][3];
    if(test[j][3]){
      data[test[j][0]] = 1;
      data[test[j][1]] = 1;
      data[test[j][2]] = 1;
    }
  }
}

int check(int pos){
  int sum = 0;
  for(int i = 0; i < 3; i++)
    if(data[test[pos][i]] == 1) sum++;
  
  if(sum == 2){
    for(int i = 0; i < 3; i++)
      if(data[test[pos][i]] == 2){
	data[test[pos][i]] = 0;
	return 1;
      }
  }
  return 0;
}

void solve(){
  int update = 0;
  while(1){
    for(int i = 0; i < num; i++){
      if(!test[i][3])
	if(check(i)) update = 1;
    }
    if(!update) break;
    update = 0;
  }
}

int main(){

  int a,b,c;
  while(cin>>a>>b>>c && a+b+c){
    fill(data,data+MAX_P,2);
    cin >> num;
    input();
    solve();
    for(int i = 1; i <= a+b+c; i++) cout << data[i] << endl;
  }
  return 0;
}