#include using namespace std; using ll = long long; //RSQ (0-indexed) template struct BIT { vector bit; int N; BIT (int n){ N = n; bit.resize(N); } void add(int loc, T val){ loc++; while(loc <= N){ bit[loc-1] += val; loc += loc & -loc; } } T sum(int l, int r){ T res = _sum(r) - _sum(l-1); return res; } T _sum(int r){ r++; T res = 0; while(r > 0){ res += bit[r-1]; r -= r & -r; } return res; } }; int f(int a, int b, string &op){ if (op == "and") return a & b; else if (op == "or") return a | b; else if (op == "xor") return a ^ b; else{ if (a) return b; else return 1; } } void solve(){ int N, l, r, c, idx, l2, r2; cin >> N; string S; vector X(N); vector Y(N-1); BIT tree(N); for (int i=0; i> S; X[i] = (S == "True" ? 1 : 0); } for (int i=0; i> Y[i]; for (int i=0; i> idx; l=-1; r=N-1; while(r-l>1){ c = (l+r)/2; if (tree.sum(0, c) >= idx) r=c; else l=c; } l2=-1; r2=N-1; while(r2-l2>1){ c = (l2+r2)/2; if (tree.sum(0, c) >= idx+1) r2=c; else l2=c; } tree.add(r, -1); X[r2] = f(X[r], X[r2], Y[r]); } cout << (X[r2] ? "True" : "False") << endl; } int main(){ int T; cin >> T; while(T){ T--; solve(); } return 0; }