Pagini recente » Cod sursa (job #486110) | Cod sursa (job #1060104) | Cod sursa (job #3236926) | Cod sursa (job #2320234) | Cod sursa (job #3278859)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
const int NMAX = 12;
int q;
int n;
int v[NMAX + 1];
int p;
int A(); int B(); int C();
int A()
{
if (p > n) return 0;
if (v[p] == 1 || v[p] == 2 || v[p] == 3)
{
p++;
return 1;
}
return 0;
}
int B()
{
if (p > n) return 0;
if (v[p] == 2)
{
p++;
return B();
}
else if (v[p] == 1)
{
p++;
if (!A()) return 0;
if (p > n || v[p] != 3) return 0;
p++;
if (!A()) return 0;
if (!C()) return 0;
return 1;
}
return 0;
}
int C()
{
if (p > n) return 0;
if (v[p] == 2)
{
p++;
return 1;
}
else if (v[p] == 3)
{
p++;
if (!B()) return 0;
if (!C()) return 0;
return 1;
}
else if (v[p] == 1)
{
p++;
if (p > n || v[p] != 2) return 0;
p++;
if (!A()) return 0;
return 1;
}
return 0;
}
int main()
{
fin >> q;
while (q--)
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
p = 1;
int ok1 = A() && (p == n + 1);
p = 1;
int ok2 = B() && (p == n + 1);
p = 1;
int ok3 = C() && (p == n + 1);
fout << (ok1 || ok2 || ok3) << '\n';
}
return 0;
}