63pts
#include<bits/stdc++.h>
using namespace std;
int t,l,prg,aim,bigx,mx,visit[500];
stack<int>stk;
stack<char>num;
char xh,ii,nb;
bool ise,wfj;
int getnum(char a[]){
if('1'>a[0]||a[0]>'9'){
return 0;
}
int len=strlen(a);
int ans=0;
for(int i=0;i<len&&!('0'>a[i]||a[i]>'9');i++){
ans*=10;
ans+=a[i]-'0';
}
return ans;
}
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&l);
while(!stk.empty()){
stk.pop();
}
while(!num.empty()){
num.pop();
}
memset(visit,0,sizeof(visit));
ise=false;
char fzd[10];
cin>>fzd;
bigx=0;
mx=0;
prg=0;
int len=strlen(fzd);
if(len>4){
aim=getnum(fzd+4);
}
else{
aim=0;
}
for(int i=1;i<=l;i++){
cin>>xh;
if(xh=='F'){
char jj[5],kk[5];
cin>>ii>>jj>>kk;
if(visit[ii-'a']){
ise=true;
}
if(((getnum(jj)&&getnum(kk))&&(getnum(jj)>getnum(kk)))||!getnum(jj)){
int p=1;
while(p&&i<=l){
cin>>xh;
if(xh=='F'){
cin>>ii>>jj>>kk;
p++;
}
else{
p--;
}
i++;
// printf("p:%d i:%d\n",p,i);
}
if(i==l){
break;
}
continue;
}
visit[ii-'a']=1;
num.push(ii);
if(!getnum(kk)){
stk.push(1);
prg++;
mx=max(prg,mx);
}
else{
stk.push(0);
}
}
else{
if(stk.empty()){
ise=true;
continue;
}
if(stk.top()){
prg--;
}
stk.pop();
visit[num.top()-'a']=0;
num.pop();
bigx=max(bigx,mx);
}
}
if(!stk.empty()||ise){
printf("ERR\n");
continue;
}
if(bigx==aim){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}