#include <stack>
#include <fstream>
using namespace std;
enum perle{
A = 4, B = 5, C = 6 };
bool verifica(ifstream& f){
int nr_perle = 0;
f >> nr_perle;
if(nr_perle == 1){
int vreau_sa_ma_scap_de_perla = 0;
f >> vreau_sa_ma_scap_de_perla;
return true; }
else{
int nou = 0;
stack<int> posibilitati[2];
posibilitati[0].push(5);
posibilitati[1].push(6);
bool e_posibil[2] = {true, true};
for(int i = 0; i < nr_perle; ++i){
f >> nou;
for(int j = 0; j < 2; ++j){
if(posibilitati[j].empty()){
e_posibil[j] = false; }
else if(e_posibil[j]){
switch(posibilitati[j].top()){
default:
if(posibilitati[j].top() == nou){
posibilitati[j].pop(); }
else{
e_posibil[j] = false; }
break;
case 4:
posibilitati[j].pop();
break;
case 5:
switch(nou){
case 1:
posibilitati[j].pop();
posibilitati[j].push(6);
posibilitati[j].push(4);
posibilitati[j].push(3);
posibilitati[j].push(4);
break;
case 3:
e_posibil[j] = false;
break; }
break;
case 6:
switch(nou){
case 1:
posibilitati[j].pop();
posibilitati[j].push(4);
posibilitati[j].push(2);
break;
case 2:
posibilitati[j].pop();
break;
case 3:
posibilitati[j].pop();
posibilitati[j].push(6);
posibilitati[j].push(5);
break; }
break; } } } }
return (e_posibil[0] && posibilitati[0].empty()) ||
(e_posibil[1] && posibilitati[0].empty()); } }
int main(){
ifstream f("perle.in");
ofstream g("perle.out");
int n = 0;
f >> n;
for(int i = 0; i < n; ++i){
g << verifica(f) << '\n'; }
return 0; }