#include <iostream>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
int t,t1[150],cnt;
int flag[1000];
char o[150][100],p[1005][200];
int main()
{
cin >> t;
for(int i = 1; i <= t; i++)
{
int temp;
cin >> t1[i] >> o[i];
cin.get();
temp = t1[i];
while(temp--)
cin.getline(p[++cnt],15);
}
int j=1,j2=0,temp=0,temp2=0,cnte=0,f=0,pow=0,cntloop=0;
for(int i = 1; i <= t; i++)
{
memset(flag,0,sizeof(flag));
cntloop = 0;
temp = t1[i];
cnte = f = 0;
j2 = j;
temp2 = temp;
pow = 0;
while(temp)
{
if(strcmp(p[j],"E") == 0)
{
cnte++;
cntloop--;
}
else
{
cntloop++;
if(flag[p[j][2]] == 1)
{
// cout<<p[j]<<" "<<p[j][2]<<" "<<cntloop<<endl;
f = 1;
j++;
break;
}
else
flag[p[j][2]] = 1;
}
if(cntloop == 1)
memset(flag,0,sizeof flag);
j++;
temp--;
}
if(f||cnte*2 != t1[i])//语法判断
{
// cout<<"ERR"<<" f:"<<f<<" t:"<<t1[i]<<" cnte:"<<cnte<<endl;
//cout<<"f:"<<f<<" cnte:"<<cnte<<" t1:"<<t1[i]<<endl;
cout<<"ERR"<<endl;
}
else
{
string rgt, ltf;
int onumber = 0;
int maxpow = 0 ,flag = 1,cntloop=0;
while( temp2 )
{
rgt.clear();
ltf.clear();
if(strcmp(p[j2], "E") == 0)
{
if(cntloop > 0)
cntloop--;
flag = 1;
temp2--;
j2++;
continue;
}
int a = 4;
while(p[j2][a] != ' ')
{
ltf += p[j2][a];
a++;
}
a++;
while(p[j2][a] !=' ' && p[j2][a] != '\0')
{
rgt += p[j2][a];
a++;
}
if(ltf > rgt)
{
flag = 0;//?
temp2--;
j2++;
continue;
}
if(ltf == rgt)
{
temp2--;
j2++;
continue;
}
if(rgt == "n" && flag )//?????????并列情况
{
cntloop++;
// cout<<p[j2]<<endl;
pow = pow>cntloop?pow:cntloop;
}
if(pow > maxpow )
maxpow = pow;
temp2--;
j2++;
}
if(o[i][2]=='n')
{
int len = strlen(o[i])-2,b=1,nn=0;
while(o[i][len]>='0'&&o[i][len]<='9')
{
for(int k=0; k < nn; k++)
b *= 10;
onumber += (o[i][len]-'0')*b;
nn++;
len--;
}
//cout<<"onumber:"<<onumber<<endl;
}
if(maxpow == 0 && o[i][2] == '1')
{
cout << "Yes"<<endl;
//cout << "Yes :"<<o[i]<<" "<<maxpow<<endl;
}
else if(maxpow == 0 && o[i][2] != '1')
{
cout << "No" << endl;
//cout << "No :" <<o[i]<<" "<<maxpow<<endl;
}
else if ( maxpow !=0 && o[i][2] == 'n' &&onumber == maxpow)
{
cout << "Yes" << endl;
//cout << "Yes :"<<o[i]<<" "<<maxpow<<endl;
}
else if( maxpow != 0 && o[i][2] == 'n' &&onumber != maxpow)
{
cout << "No" << endl;
//cout << "No :" <<o[i]<<" "<<maxpow<<endl;
}
else if(maxpow !=0 && o[i][2] != 'n')
{
cout << "No" << endl;
//cout << "No :" <<o[i]<<" "<<maxpow<<endl;
}
}
}
return 0;
}