#include <bits/stdc++.h>
using namespace std;
int n;
bool bo[26],bo2[26],bo3[26];
stack <char> str;
int main()
{
freopen("201702.in","r",stdin);
freopen("201702.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
memset(bo,0,sizeof(bo));
memset(bo2,0,sizeof(bo2));
memset(bo3,0,sizeof(bo3));
while (!str.empty()) str.pop();
int m,t=0,sumf=0,ans=1,p=1,flag2=false;
bool flag=true;
scanf("%d",&m);
char ch='A',temp;
while (ch!='O') ch=getchar();
ch=getchar();ch=getchar();
if (ch=='1') t=1;
else
{
ch=getchar();
ch=getchar();
while (ch<='9' && ch>='0')
{
t=t*10+ch-'0';
ch=getchar();
}
t++;
}
for (int j=1;j<=m;j++)
{
while (ch!='E' && ch!='F') ch=getchar();
if (ch=='E')
{
sumf--;
if (sumf<0)
{
flag=false;
break;
}
char c=str.top();
bo[c-'a']=false;
if (bo2[c-'a']) flag2=false,bo2[c-'a']=false;
str.pop();
ch='X';
if (bo3[c-'a'])
{
ans=max(ans,p);
p--;
bo3[c-'a']=false;
}
if (sumf==0)
{
ans=max(ans,p);
p=1;
}
continue;
}
sumf++;
while (ch>'z' || ch<'a') ch=getchar();
if (bo[ch-'a'])
{
flag=false;
break;
}
bo[ch-'a']=true;
str.push(ch);
temp=ch;
while (!(ch<='9' && ch>='0') && !(ch=='n')) ch=getchar();
if (ch=='n' && !flag2)
{
ch=getchar();
while (!(ch<='9' && ch>='0') && !(ch=='n')) ch=getchar();
if (ch=='n') continue;
bo2[temp-'a']=true;
flag2=true;
}
else
{
int tt=0;
while (ch<='9' && ch>='0')
{
tt=tt*10+ch-'0';
ch=getchar();
}
while (!(ch<='9' && ch>='0') && !(ch=='n')) ch=getchar();
if (ch=='n' && !flag2)
{
p++;
bo3[temp-'a']=true;
}
else
{
int tt2=0;
while (ch<='9' && ch>='0')
{
tt2=tt2*10+ch-'0';
ch=getchar();
}
if (tt>tt2 && !flag2)
{
bo2[temp-'a']=true;
flag2=true;
}
}
}
}
ans=max(ans,p);
if (!flag || sumf) printf("ERR\n");
else if (ans==t) printf("Yes\n");
else printf("No\n");
}
return 0;
}