import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * <pre>
 *
 *AOJ Rummy?????????????????????????????????????????????????????°
 *
 *?????????????????????????????°??????
 * ????????????????????????????????°(?°?????¨??????´)
 * ????????????
 * ??¢ ??????(?¬??????????)?????¨??????(?????´???)
 *
 * ??????????\?????§???????14???38???
 *
 * ??? ??°??????????????????????????¨?????´???
 * ??? ?????????????????????????????????
 * ??¢ ???????¢????
 * ??£ ????§?????????????????????????
 * ??? ??°??????????????????
 * ??\ ???????¢????
 * ???????????????????\?
 * ??§ ???????????????????????°??????
 * </pre>
 *
 * @author ??????
 * @category AOJRummy
 * @version 1.8_45
 * @since 1.8_45
 *
 */
public class Main{

	/**
	 * ????????°????????????3????????????????????°?????¶???
	 */
	private static final int TRIPLESET = 9;

	/**
	 * ?????¶??????????????????????????????????????????????????????
	 */
	private static final String ZERO = "0";

	/**
	 * ??????for??????????????????????¨?????????????????????????????????????????????????????????°
	 */
	private static final int ADDRESSPLUSZERO = 0;

	/**
	 * ??????for??????????????????????¨?????????????????????????????????????????????????????????°
	 */
	private static final int ADDRESSPLUSONE = 1;

	/**
	 * ??????for??????????????????????¨?????????????????????????????????????????????????????????°
	 */
	private static final int ADDRESSPLUSTWO = 2;

	/**
	 * ??????????????§BufferedReader?????????
	 *
	 * @throws NumberFormatException
	 *
	 * @throws IOException
	 *             try-catch???????????????throws IOException?????£?¨??????????
	 */
	public static void main(String[] args) throws IOException {

		// ?????????????????????
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// ?????????????´???´???
		ArrayList<Integer> answer = new ArrayList<Integer>();

		// 1??????????????????set?????°??????????????°
		int set = Integer.parseInt(br.readLine());

		// ????????????????´???´???
		ArrayList<UTRummyCard> cardArr = new ArrayList<UTRummyCard>();


		//test
		CardMethod cm = new CardMethod();


		// for????????? set????????°?????????
		for (int cnt1 = ADDRESSPLUSZERO; cnt1 < set; cnt1++) {

			// ??????????????°??????????????¨????????????
			String tmpNum = br.readLine();
			// ??????????????????????????¨????????????
			String tmpColor = br.readLine();

			// ???????????????????????????
			cm.inputTheCardArr(cardArr, tmpNum, tmpColor);

			/**
			 * ???????????¶??????????????°??? ????????????????????°0
			 */
			// result????????????????????????????´???´???
			int result = cm.utRummy(cardArr);
			// ?????????????´?
			answer.add(result);

			// ??¢??¬????????????????????????????????§??????????????§?????????????\?
			cardArr.clear();
		}
		// for????????? ??????????????????????????????
		for (int cnt = ADDRESSPLUSZERO; cnt < answer.size(); cnt++) {
			// ???????????????
			System.out.println(answer.get(cnt));
		}
	}// ?????????????????????????????????

	/**
	 * ??????????????????????????????????????????
	 * @author ??????
	 */
	public static class CardMethod {

		/**
		 *
		 *
		 * @param cardArr
		 * @param transNum
		 * @param transColor
		 */
		static void inputTheCardArr(ArrayList<UTRummyCard> cardArr, String tmpNum, String tmpColor) {

			// ?????°???????§£ ??°??????????´?
			String[] transNum = tmpNum.split(" ");
			// ?????°???????§£ ??????????´?
			String[] transColor = tmpColor.split(" ");

			/**
			 * ?????¶??? ??±??????????????°?????????????????????????????´??? ??±?????????????????????????????°??????????????´???
			 *
			 * ?????????????????¨?????¨?????????????????\??? ??????????¨???¨?????§.equals()???.contains()????????¨???????????????????????´????????????????????????
			 *
			 */
			String swi = (transNum.length >= transColor.length) ? "LongNum" : "LongColor";
			// ???????????????????????£???
			switch (swi) {
			case "LongNum":
				caseOne(cardArr, transNum, transColor);
				break;

			case "LongColor":
				caseTwo(cardArr, transNum, transColor);
				break;

			default:
				System.out.println("??¨????????????");
				break;
			}
		}

		private static void caseOne(ArrayList<UTRummyCard> cardArr, String[] transNum, String[] transColor) {
			// ??°???, ?????????????????????
			for (int cnt2 = ADDRESSPLUSZERO; cnt2 < transNum.length; cnt2++) {
				// ??±?????????
				if (cnt2 >= transColor.length) {
					// ???????????????????????¨?????¨??????????????????????????\
					cardArr.add(new UTRummyCard(Integer.parseInt(transNum[cnt2]), ZERO));
				} else {
					// ????´??????????????????????????????????????????????
					cardArr.add(new UTRummyCard(Integer.parseInt(transNum[cnt2]), transColor[cnt2]));
				}
			}
		}

		private static void caseTwo(ArrayList<UTRummyCard> cardArr, String[] transNum, String[] transColor) {
			for (int cnt2 = ADDRESSPLUSZERO; cnt2 < transColor.length; cnt2++) {
				// ??±?????????
				if (cnt2 >= transNum.length) {
					// ??°???????????????????????¨?????¨????????°?????????????????\
					cardArr.add(new UTRummyCard(ADDRESSPLUSZERO, transColor[cnt2]));
				} else {
					// ????´??????????????????????????????????????????????
					cardArr.add(new UTRummyCard(Integer.parseInt(transNum[cnt2]), transColor[cnt2]));
				}
			}
		}

		/**
		 * ???????????¶???????????????
		 *
		 * @return result ??????????????????????????????
		 * @param count
		 *            ????????¨??????"0"?????°???0????????\?????????????????£?????¨????????°?????°??????
		 */
		private static int utRummy(ArrayList<UTRummyCard> cardArr) {

			// ?????????0???????????????
			int result = ADDRESSPLUSZERO;

			// ???????????????????????´???
			Collections.sort(cardArr, new Comparator<UTRummyCard>() {
				@Override
				public int compare(UTRummyCard numA, UTRummyCard numB) {
					// ???????????°????????????????????´???????\?????????????????????????
					return numA.getFrontnumber() - numB.getFrontnumber();
				}
			});

			// 3??£?¶????????????????????????°?¶????
			serialCard(cardArr);

			// ??????????????????3???????????°?¶????
			sameCard(cardArr);

			return  result = verificationCard(result, cardArr);

		}// utRummy????????????????????????

		private static int verificationCard(int result, ArrayList<UTRummyCard> cardArr) {
			// ???????????????0???????????????
			int count = ADDRESSPLUSZERO;

			/**
			 * @Warnning ???????????????????????´??????
			 *
			 *           ???????????????????????\????????????????????¶????????????????????¨??§
			 */
			for (int cnt = ADDRESSPLUSZERO; cnt < cardArr.size(); cnt++) {

				/**
				 * ????????? ?????¶????????????????????????????????§???????????????ZERO????????\?????????????????????
				 */
				if (cardArr.get(cnt).getRearColor() == ZERO) {

					// ?????\?????????????????????????????°?????°??????
					count++;

					// ?????????????????°??????????¶????????????¨???????????????????????????
					if (count == TRIPLESET) {
						// ?????¶??????????????°???????????????
						result = ADDRESSPLUSONE;
					}
				}
			}
			// ????????????????????????????????????
			return result;
		}

		/**
		 * ????????°????????????????????°?¶????
		 *
		 * @param cardArr
		 *            ?????¶??????????????°"0"????????\????????????????????????
		 */
		private static void sameCard(ArrayList<UTRummyCard> cardArr) {
			/**
			 * for??????????????¬???
			 *
			 * ???????????????????±????????????¶ ??????1 2 3 3 4 5 7 7 7 ??? [7] [7] [7]
			 *
			 * @param cnt1
			 *            ???????????????????????? "0";
			 * @param cnt2
			 *            ???????????????????????? "cnt1 + 1";
			 * @param cnt3
			 *            ???????????????????????? "cnt2 + 1";
			 *
			 */
			// for???????????????????????????????????????????????¨???????????????????????????????????????????????????
			for (int cnt1 = ADDRESSPLUSZERO; cnt1 < cardArr.size() - ADDRESSPLUSTWO; cnt1++) {
				for (int cnt2 = cnt1 + ADDRESSPLUSONE; cnt2 < cardArr.size() - ADDRESSPLUSONE; cnt2++) {
					for (int cnt3 = cnt2 + ADDRESSPLUSONE; cnt3 < cardArr.size(); cnt3++) {

						// (1)?????????????????????????????????
						if (cardArr.get(cnt1).getRearColor().equals(cardArr.get(cnt2).getRearColor())
								&& cardArr.get(cnt2).getRearColor().equals(cardArr.get(cnt3).getRearColor())) {

							// (2)????????°???????????????????????????
							if (cardArr.get(cnt1).getFrontnumber() == cardArr.get(cnt2).getFrontnumber()
									&& cardArr.get(cnt2).getFrontnumber() == cardArr.get(cnt3).getFrontnumber()) {

								// (3)???????????§??????????????????????????£??????????????§??????????????????
								if (!(cardArr.get(cnt1).getRearColor()).contains(ZERO)
										&& !(cardArr.get(cnt2).getRearColor()).contains(ZERO)
										&& !(cardArr.get(cnt3).getRearColor()).contains(ZERO)) {

									// ??¨???????????¶??????????????°??????????????????????????????"0"????????\
									cardArr.remove(cnt1);
									cardArr.add(cnt1, (new UTRummyCard(ZERO)));
									cardArr.remove(cnt2);
									cardArr.add(cnt2, (new UTRummyCard(ZERO)));
									cardArr.remove(cnt3);
									cardArr.add(cnt3, (new UTRummyCard(ZERO)));
								}
							}
						}
					}
				}
			}
		}// sameCard????????????????????????

		/**
		 * 3??£?¶??????°??????????????°?¶????
		 *
		 * @param cardArr
		 *            ?????¶??????????????°"0"????????\????????????????????????
		 */
		private static void serialCard(ArrayList<UTRummyCard> cardArr) {

			/**
			 * for??????????????¬???
			 *
			 * ???????????????????±????????????¶ ??????1 2 3 3 4 5 7 7 7 ??? [1] [2] [3]
			 *
			 * @param cnt1
			 *            ???????????????????????? "0";
			 * @param cnt2
			 *            ???????????????????????? "cnt1 + 1";
			 * @param cnt3
			 *            ???????????????????????? "cnt2 + 1";
			 *
			 */
			// for???????????????????????????????????????????????¨???????????????????????????????????????????????????
			for (int cnt1 = ADDRESSPLUSZERO; cnt1 < cardArr.size() - ADDRESSPLUSTWO; cnt1++) {
				for (int cnt2 = cnt1 + ADDRESSPLUSONE; cnt2 < cardArr.size() - ADDRESSPLUSONE; cnt2++) {
					for (int cnt3 = cnt2 + ADDRESSPLUSONE; cnt3 < cardArr.size(); cnt3++) {

						// (1)?????????????????????????????????
						if (cardArr.get(cnt1).getRearColor().equals(cardArr.get(cnt2).getRearColor())
								&& cardArr.get(cnt2).getRearColor().equals(cardArr.get(cnt3).getRearColor())) {

							// (2)3??£?¶??????°????????????
							if (cardArr.get(cnt1).getFrontnumber() == cardArr.get(cnt2).getFrontnumber() - 1
									&& cardArr.get(cnt1).getFrontnumber() == cardArr.get(cnt3).getFrontnumber() - 2) {

								// (3)???????????§??????????????????????????£??????????????§??????????????????
								if (!(cardArr.get(cnt1).getRearColor()).equals(ZERO)
										&& !(cardArr.get(cnt2).getRearColor()).equals(ZERO)
										&& !(cardArr.get(cnt3).getRearColor()).equals(ZERO)) {

									// ??¨???????????¶??????????????°??????????????????????????????"0"????????\
									cardArr.remove(cnt1);
									cardArr.add(cnt1, (new UTRummyCard(ZERO)));
									cardArr.remove(cnt2);
									cardArr.add(cnt2, (new UTRummyCard(ZERO)));
									cardArr.remove(cnt3);
									cardArr.add(cnt3, (new UTRummyCard(ZERO)));
								}
							}
						}
					}
				}
			}
		}// serialCard????????????????????????

	}//???????????????????????????

}// Rummy4?????????????????????

/**
 * ?????????Card
 *
 * ???????????????????????????????????°????????????(???????????????????????°??????????????¨????????????) ??? ????????????????????????????§????
 *
 * 1) ????????¨??????????????????????????????2?????\?????¨????????????????????????????????????
 *
 * 2) ??¨??§??????????????????????????????????????°????????????????????????
 *
 * 3) ????????????????????????????????????
 *
 * 4) ??????????????????????????????????????????????????????????????????????????????
 *
 * 5) ???????????????????????????????????????????????????????????????????????¢
 *
 * 6) ????????§??????????????¨?????????????????°??????????????????????????????????????????????????? ?????????????????????????????????????????????
 *
 * 7)????????????????????°????????????????????????????????¨??????????§£????????????
 *
 * 8) ??????????´???´???????????????????????£????????????????????????????????????????????????????????£??¨?¢??????????????????????
 *
 * @author ?????????????????§???
 *
 */
class UTRummyCard {

	/**
	 * int ??????????????°?????????~????????§?????°????????\??????????????°??¶?????????????????\????????±????????\???
	 */
	private int frontnumber = 0;

	/**
	 * String ?????????????????????????¨???????????????????????????\????????±????????\???
	 */
	private String rearColor = "";

	public UTRummyCard() {

	}

	/**
	 * ????????°?????????????????????????????´???,???????????¨?????¨ ???) ?????????????????¶??????????????°??¢???????????±????¶??????¨??????
	 *
	 * @param ZERO
	 *            ????????° ZERO
	 */
	public UTRummyCard(String ZERO) {
		rearColor = ZERO;
	}

	/**
	 * ????????????????????????????????????????????????????????°??¨??????int,String??????
	 *
	 * @param num
	 *            ???????????????????????????????????°???
	 * @param color
	 *            ????????????????????????????????????
	 */
	public UTRummyCard(int num, String color) {
		frontnumber = num;
		rearColor = color;
	}

	/**
	 * private????£?????????\????????????????????????????????????
	 *
	 * @return int?????§?????\?????¨?????????????????°??????????????????
	 */
	public int getFrontnumber() {
		return frontnumber;
	}

	/**
	 * private????£?????????\????????????????????????????????????
	 *
	 * @param frontnumber
	 *            int?????§?????\?????¨????????¬???????????????????????°??????????´?
	 */
	public void setFrontnumber(int frontnumber) {
		this.frontnumber = frontnumber;
	}

	/**
	 * private????£?????????\????????????????????????????????????
	 *
	 * @return String?????§?????\?????¨?????????????????????????????????
	 */
	public String getRearColor() {
		return rearColor;
	}

	/**
	 * private????£?????????\????????????????????????????????????
	 *
	 * @param rearColor
	 *            String?????§?????\?????¨?????????????????????????????????
	 */
	public void setRearColor(String rearColor) {
		this.rearColor = rearColor;
	}

}// UTRummyCard?????????????????????

Measured memory_bytes: 25008