#include<bits/stdc++.h>
using namespace std;
struct Node{
int val;
Node *left,*right;
Node(int x){
val=x;
left=right=NULL;
}
};
void makeNode(Node *root, int u,int v, char c){
if(c=='L') root->left= new Node(v);
else root->right= new Node(v);
}
void insert(Node *root, int u,int v,char c){
if(root==NULL) return;
if(root->val==u){
makeNode(root,u,v,c);
}
insert(root->left,u,v,c);
insert(root->right,u,v,c);
}
int height(Node *root){
if(root==NULL) return 0;
return 1+max(height(root->left),height(root->right));
}
bool check(Node *root, int level,int h){
if(root==NULL) return true;
if(root->left==NULL && root->right==NULL && level<h) return false;
return check(root->left,level+1,h) && check(root->right,level+1,h);
}
int main(){
int t;cin>>t;
while(t--){
int n; cin>>n;
Node* root=NULL;
while(n--){
int u,v; char c;
cin>>u>>v>>c;
if(root==NULL){
root = new Node(u);
makeNode(root,u,v,c);
}
else insert(root, u,v,c);
}
if(check(root,1,height(root))) cout<<1<<endl;
else cout<<0<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZXsKCWludCB2YWw7CglOb2RlICpsZWZ0LCpyaWdodDsKCU5vZGUoaW50IHgpewoJCXZhbD14OwoJCWxlZnQ9cmlnaHQ9TlVMTDsKCX0KfTsKdm9pZCBtYWtlTm9kZShOb2RlICpyb290LCBpbnQgdSxpbnQgdiwgY2hhciBjKXsKCWlmKGM9PSdMJykgcm9vdC0+bGVmdD0gbmV3IE5vZGUodik7CgllbHNlIHJvb3QtPnJpZ2h0PSBuZXcgTm9kZSh2KTsKCQp9Cgp2b2lkIGluc2VydChOb2RlICpyb290LCBpbnQgdSxpbnQgdixjaGFyIGMpewoJaWYocm9vdD09TlVMTCkgcmV0dXJuOwoJaWYocm9vdC0+dmFsPT11KXsKCQltYWtlTm9kZShyb290LHUsdixjKTsKCX0KCWluc2VydChyb290LT5sZWZ0LHUsdixjKTsKCWluc2VydChyb290LT5yaWdodCx1LHYsYyk7Cn0KCmludCBoZWlnaHQoTm9kZSAqcm9vdCl7CglpZihyb290PT1OVUxMKSByZXR1cm4gMDsKCXJldHVybiAxK21heChoZWlnaHQocm9vdC0+bGVmdCksaGVpZ2h0KHJvb3QtPnJpZ2h0KSk7Cn0KCmJvb2wgY2hlY2soTm9kZSAqcm9vdCwgaW50IGxldmVsLGludCBoKXsKCWlmKHJvb3Q9PU5VTEwpIHJldHVybiB0cnVlOwoJaWYocm9vdC0+bGVmdD09TlVMTCAmJiByb290LT5yaWdodD09TlVMTCAmJiBsZXZlbDxoKSByZXR1cm4gZmFsc2U7CglyZXR1cm4gY2hlY2socm9vdC0+bGVmdCxsZXZlbCsxLGgpICYmIGNoZWNrKHJvb3QtPnJpZ2h0LGxldmVsKzEsaCk7CgkKfQoKaW50IG1haW4oKXsKCWludCB0O2Npbj4+dDsKCXdoaWxlKHQtLSl7CgkJaW50IG47IGNpbj4+bjsKCQlOb2RlKiByb290PU5VTEw7CgkJd2hpbGUobi0tKXsKCQkJaW50IHUsdjsgY2hhciBjOwoJCQljaW4+PnU+PnY+PmM7CgkJCWlmKHJvb3Q9PU5VTEwpewoJCQkJcm9vdCA9IG5ldyBOb2RlKHUpOwoJCQkJbWFrZU5vZGUocm9vdCx1LHYsYyk7CgkJCX0KCQkJZWxzZSBpbnNlcnQocm9vdCwgdSx2LGMpOwoJCX0KCQlpZihjaGVjayhyb290LDEsaGVpZ2h0KHJvb3QpKSkgY291dDw8MTw8ZW5kbDsKCQllbHNlIGNvdXQ8PDA8PGVuZGw7Cgl9Cn0=