#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Cd{
	int n;
	char w;
	bool f;
};

bool comp(const Cd& c1, const Cd& c2)
{
	return c1.n < c2.n;
}

bool func(vector<Cd> vec)
{
	int l = vec.size();
	bool f = true;
	if(l == 0){
		return true;
	} else if(l%3 != 0){
		return false;
	}
	sort(vec.begin(), vec.end(), comp);
	
	if(vec[0].n == vec[1].n && vec[0].n == vec[2].n){
		vec[0].f = vec[1].f = vec[2].f = false;
	}
	if(l > 3){
		if(vec[l-1].n == vec[l-2].n && vec[l-1].n == vec[l-3].n){
			vec[l-1].f = vec[l-2].f = vec[l-3].f = false;
		}
	}
	
	for(int i = 0; i < l; i++){
		if(vec[i].f){
			vec[i].f = false;
			int c = 1;
			for(int j = i+1; j < l; j++){
				if(vec[i].n+c == vec[j].n && vec[j].f){
					vec[j].f = false;
					c++;
					if(c == 3){
						break;
					}
				}
			}
			if(c == 1){
				for(int j = i+1; j < l; j++){
					if(vec[i].n == vec[j].n && vec[j].f){
						vec[j].f = false;
						c++;
						if(c == 3){
							break;
						}
					}
				}
			}
			if(c < 3){
				f = false;
				break;
			}
		}
	}
	
	return f;
}

int main()
{
	int n;
	
	while(cin>>n && n){
		int a[10];
		Cd c;
		
		while(n--){
			vector<Cd> g, r, b;
			for(int i = 0; i < 9; i++){
				cin >> a[i];
			}
			for(int i = 0; i < 9; i++){
				cin >> c.w;
				c.n = a[i];
				c.f = true;
				if(c.w == 'R'){
					r.push_back(c);
				} else if(c.w == 'B'){
					b.push_back(c);
				} else {
					g.push_back(c);
				}
			}
			
			if(func(r) && func(g) && func(b)){
				cout << 1 << endl;
			} else {
				cout << 0 << endl;
			}
		}
	}
	
	return 0;
}