using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Collections;
using System.Linq;

namespace Program
{
    class Program
    {
        // ソートをするメソッド
        private static void sort(List<string> card)
        {
            var list = card.Select(title => new { Name = title, Index = ToInt(title) })
                .OrderBy(title => title.Index).Select(title => title.Name);

            var sort = string.Join(",", list);
            string[] sortColor = sort.Split(',');

            for(int i = 0; i < sortColor.Length; i++)
            {
                for(int j = i + 1; j < sortColor.Length; j++)
                {
                    if(sortColor[i] == sortColor[j])
                    {
                        string temp = sortColor[j];
                        sortColor[j] = sortColor[j - 1];
                        sortColor[j - 1] = temp;
                    }
                }
            }
            card.Clear();
            card.AddRange(sortColor);
        }

        //　文字列に含まれる数値を見つけ出す
        private static int ToInt(string text)
        {
            return int.Parse(Regex.Replace(text, @"[^0-9]", ""));
        }

        // 数値とカラーが３つ同じものを見つけ出す
        private static void NumberColorCheck(List<string> card)
        {
            for (int i = 0; i < card.Count;)
            {
                if (card.Count < 3)
                {
                    break;
                }
                if (i == card.Count - 2)
                {
                    break;
                }

                if (card[i] == card[i + 1])
                {
                    if (card[i + 1] == card[i + 2])
                    {
                        card.RemoveAt(i);
                        card.RemoveAt(i);
                        card.RemoveAt(i);
                        i = 0;
                    }
                    else
                    {
                        i++;
                    }
                }
                else
                {
                    i++;
                }
            }
        }

        // 同一数値かつカラーがRGB順か確認するメソッド
        private static void SameNumberTurnColor(List<string> card)
        {
            for(int i = 0; i < card.Count;)
            {
                if (card.Count < 3)
                {
                    break;
                }
                if (i == card.Count - 2)
                {
                    break;
                }

                if (card[i].Substring(0, 1) == card[i + 1].Substring(0, 1))
                {
                    if (card[i].Substring(0, 1) == card[i + 2].Substring(0, 1))
                    {
                        if (card[i].Substring(1, 1) == "R" && card[i + 1].Substring(1, 1) == "G" && card[i + 2].Substring(1, 1) == "B")
                        {
                            card.RemoveAt(i);
                            card.RemoveAt(i);
                            card.RemoveAt(i);
                            i = 0;
                        }
                        else
                        {
                            i++;
                        }
                    }
                    else
                    {
                        i++;
                    }
                }
                else
                {
                    i++;
                }
            }
        }


        static void Main(string[] args)
        {
            // データセット数を取得
            var dataSetNumber = int.Parse(Console.ReadLine());

            // 勝利条件を格納するリスト
            var results = new List<int>();

            // ９枚のカードの数値と色を取得

            for (int i = 0; i < dataSetNumber; i++)
            {
                var cardNumColor = new List<string>();

                int[] number = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
                string[] color = Console.ReadLine().Split(' ');
                for (int j = 0; j < 9; j++)
                {
                    cardNumColor.Add(number[j].ToString() + color[j]);
                }

                // ソートする
                sort(cardNumColor);

                // 同一の数値とカラーを探す
                NumberColorCheck(cardNumColor);

                if (cardNumColor.Count >= 3)
                {
                    // 連番チェック
                    var serial = new List<string>();

                    for (int j = 0; j < cardNumColor.Count; j++)
                    {
                        var memory1 = 0;
                        var memory2 = 0;
                        bool rgbJudg = true;
                        bool flg1 = true;
                        bool flg2 = true;
                        serial.Add(cardNumColor[0]);
                        for (int z = 1; z < cardNumColor.Count; z++)
                        {
                            if (int.Parse(cardNumColor[0].Substring(0, 1)) + 1 == int.Parse(cardNumColor[z].Substring(0, 1)) && flg1 == true)
                            {
                                if (cardNumColor[0].Substring(1, 1) == cardNumColor[z].Substring(1, 1))
                                {
                                    serial.Add(cardNumColor[z]);
                                    memory1 = z;
                                    flg1 = false;
                                }
                                if(cardNumColor[0].Substring(1, 1) == "R" && cardNumColor[z].Substring(1, 1) == "G")
                                {
                                    serial.Add(cardNumColor[z]);
                                    memory1 = z;
                                    flg1 = false;
                                    rgbJudg = false;
                                }
                            }
                            if (int.Parse(cardNumColor[0].Substring(0, 1)) + 2 == int.Parse(cardNumColor[z].Substring(0, 1)) && flg2 == true)
                            {
                                if (cardNumColor[0].Substring(1, 1) == cardNumColor[z].Substring(1, 1))
                                {
                                    serial.Add(cardNumColor[z]);
                                    memory2 = z;
                                    flg2 = false;
                                }
                                if (cardNumColor[0].Substring(1, 1) == "R" && cardNumColor[z].Substring(1, 1) == "B" && rgbJudg == false)
                                {
                                    serial.Add(cardNumColor[z]);
                                    memory2 = z;
                                    flg2 = false;
                                }
                            }
                            if (serial.Count >= 3)
                            {
                                cardNumColor.RemoveAt(0);
                                cardNumColor.RemoveAt(memory1 - 1);
                                cardNumColor.RemoveAt(memory2 - 2);
                                serial.RemoveAt(0);
                                serial.RemoveAt(0);
                                serial.RemoveAt(0);
                                z = cardNumColor.Count;
                            }
                        }
                        if (flg1 == true || flg2 == true)
                        {
                            serial.Clear();
                            cardNumColor.RemoveAt(0);
                        }
                    }

                }

                if(cardNumColor.Count >= 3)
                {
                    // 同一の数値でカラーがRGB順を探す
                    SameNumberTurnColor(cardNumColor);
                }


                // 勝利条件を満たしているか判定
                if (cardNumColor.Count == 0)
                {
                    results.Add(1);
                }
                else
                {
                    results.Add(0);
                }
            }

            // 勝利条件の結果を出力
            foreach (int result in results)
            {
                Console.WriteLine(result);
            }
        }
    }
}


Measured memory_bytes: 17876