#include<bits/stdc++.h>
char st[110];//存储循环变量
bool pd[110];//检测此循环是否为O(n)
int T,n,deep;//deep:题目给出的复杂度
int top,ans,Max;//top:存储栈栈顶指针 ans:记录当前复杂度 Max:最后的复杂度
int limit,limitnum;//当存在x>y时,limit:记录位置 limitnum:记录复杂度
int Err;//是否有错误
int main(){
// freopen("b.in","r",stdin);
// freopen("b.out","w",stdout);
int i,j;
char s[10];
scanf("%d",&T);
// printf("%d\n",T);
while (T--) {
Err=0; top=0; limit=0; Max=0; ans=0;
memset(pd,0,sizeof(pd));
scanf("%d",&n);
scanf("%s",s);
// printf("%d %s\n",n,s);
if (s[2]=='1') deep=0;
else {
deep=s[4]-'0';
if (s[5]>='0' && s[5]<='9') deep=deep*10+s[5]-'0';
}
// printf("%d\n",deep);
for (i=1;i<=n;i++) {
// printf("%d\n",i);
scanf("%s",s);
if (s[0]=='E') {
if (!limit) {if (ans>Max) Max=ans;}
else if (limitnum>Max) Max=limitnum;
if (pd[top]==1) {
ans--;
pd[top]=0;
}
top--;
if (top==limit) limit=0;
if (top<0) Err=1;
// printf("top:%d ans:%d Max:%d limit:%d\n",top,ans,Max,limit);
continue;
}
else {
scanf("%s",s);
int a=0,b=0;
for (j=1;j<=top;j++)
if (st[j]==s[0]) {
Err=1; break;
}
st[++top]=s[0];
int p;
scanf("%s",s);
p=0;
if (s[p]>='0' && s[p]<='9')
while (s[p]>='0' && s[p]<='9') {
a=a*10+s[p++]-'0';
}
else {
a=200;
}
scanf("%s",s);
p=0;
if (s[p]>='0' && s[p]<='9')
while (s[p]>='0' && s[p]<='9') {
b=b*10+s[p++]-'0';
}
else {
pd[top]=1;
ans++;
b=200;
}
if (a==b) {
pd[top]=0;
ans--;
}
if (a>b && !limit) {
limit=top;
limitnum=ans;
}
}
// printf("top:%d ans:%d Max:%d limit:%d\n",top,ans,Max,limit);
}
if (top!=0) Err=1;
if (Err) printf("ERR\n");
else if (Max==deep) printf("Yes\n");
else if (Max!=deep) printf("No\n");
// printf("%d %d %d %d\n",n,deep,Max,Err);
}
return 0;
}