#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
char str[40010];
struct node
{
int sum;
int minsum;
}tree[1000005];
void build(int id,int l,int r)
{
if(r-l<2)
{
if(str[l] == '(')
{
tree[id].sum = 1;
tree[id].minsum = 1;
}
else
{
tree[id].sum = -1;
tree[id].minsum = -1;
}
return;
}
int mid = (r+l)/2;
build(id*2,l,mid);
build(id*2+1,mid,r);
tree[id].sum = tree[id*2].sum + tree[id*2+1].sum;
tree[id].minsum = min(tree[id*2].minsum,tree[id*2].minsum+tree[id*2+1].minsum);
}
void modify(int index,int id,int l,int r)
{
if(r-l<2)
{
tree[id].sum = tree[id].minsum = -tree[id].sum;
return;
}
int mid = (r+l)/2;
if(index<mid)
modify(index,id*2,l,mid);
else
modify(index,id*2+1,mid,r);
tree[id].sum = tree[id*2].sum + tree[id*2+1].sum;
tree[id].minsum = min(tree[id*2].minsum,tree[id*2].minsum+tree[id*2+1].minsum);
}
int main()
{
int n,k;
int val;
int h = 1;
for(int h=1;h<=10;h++)
{
scanf("%d",&n);
scanf("%s",str);
build(1,0,n);
//cout<<"Test "<<h<<" :"<<endl;
printf("Test %d:\n",h);
//cin>>k;
scanf("%d",&k);
while(k--)
{
cin>>val;
if(!val)
{
if(tree[1].sum == 0 && tree[1].minsum == 0)
{
//cout<<"YES"<<endl;
printf("YES\n");
}
else
{
//cout<<"NO"<<endl;
printf("NO\n");
}
//cout<<tree[1].sum<<"------------"<<tree[1].minsum<<endl;
}
else
{
modify(val-1,1,0,n);
}
}
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0ZGxpYj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2hhciBzdHJbNDAwMTBdOwpzdHJ1Y3Qgbm9kZQp7CglpbnQgc3VtOwoJaW50IG1pbnN1bTsKfXRyZWVbMTAwMDAwNV07CnZvaWQgYnVpbGQoaW50IGlkLGludCBsLGludCByKQp7CglpZihyLWw8MikKCXsKCQlpZihzdHJbbF0gPT0gJygnKQoJCXsKCQkJdHJlZVtpZF0uc3VtID0gMTsKCQkJdHJlZVtpZF0ubWluc3VtID0gMTsKCQl9CgkJZWxzZQoJCXsKCQkJdHJlZVtpZF0uc3VtID0gLTE7CgkJCXRyZWVbaWRdLm1pbnN1bSA9IC0xOwoJCX0KCQlyZXR1cm47Cgl9CglpbnQgbWlkID0gKHIrbCkvMjsKCWJ1aWxkKGlkKjIsbCxtaWQpOwoJYnVpbGQoaWQqMisxLG1pZCxyKTsKCXRyZWVbaWRdLnN1bSA9IHRyZWVbaWQqMl0uc3VtICsgdHJlZVtpZCoyKzFdLnN1bTsKCXRyZWVbaWRdLm1pbnN1bSA9IG1pbih0cmVlW2lkKjJdLm1pbnN1bSx0cmVlW2lkKjJdLm1pbnN1bSt0cmVlW2lkKjIrMV0ubWluc3VtKTsKfQp2b2lkIG1vZGlmeShpbnQgaW5kZXgsaW50IGlkLGludCBsLGludCByKQp7CglpZihyLWw8MikKCXsKCQl0cmVlW2lkXS5zdW0gPSB0cmVlW2lkXS5taW5zdW0gPSAtdHJlZVtpZF0uc3VtOwoJCXJldHVybjsKCX0KCWludCBtaWQgPSAocitsKS8yOwoJaWYoaW5kZXg8bWlkKQoJbW9kaWZ5KGluZGV4LGlkKjIsbCxtaWQpOwoJZWxzZQoJbW9kaWZ5KGluZGV4LGlkKjIrMSxtaWQscik7Cgl0cmVlW2lkXS5zdW0gPSB0cmVlW2lkKjJdLnN1bSArIHRyZWVbaWQqMisxXS5zdW07Cgl0cmVlW2lkXS5taW5zdW0gPSBtaW4odHJlZVtpZCoyXS5taW5zdW0sdHJlZVtpZCoyXS5taW5zdW0rdHJlZVtpZCoyKzFdLm1pbnN1bSk7Cn0KaW50IG1haW4oKQp7CglpbnQgbixrOwoJaW50IHZhbDsKCWludCBoID0gMTsKCWZvcihpbnQgaD0xO2g8PTEwO2grKykKCXsKCQlzY2FuZigiJWQiLCZuKTsKCQlzY2FuZigiJXMiLHN0cik7CgkJYnVpbGQoMSwwLG4pOwoJCS8vY291dDw8IlRlc3QgIjw8aDw8IiA6Ijw8ZW5kbDsKCQlwcmludGYoIlRlc3QgJWQ6XG4iLGgpOwoJCS8vY2luPj5rOwoJCXNjYW5mKCIlZCIsJmspOwoJCXdoaWxlKGstLSkKCQl7CgkJCWNpbj4+dmFsOwoJCQlpZighdmFsKQoJCQl7CgkJCQlpZih0cmVlWzFdLnN1bSA9PSAwICYmIHRyZWVbMV0ubWluc3VtID09IDApCgkJCQl7CgkJCQkJLy9jb3V0PDwiWUVTIjw8ZW5kbDsKCQkJCQlwcmludGYoIllFU1xuIik7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJLy9jb3V0PDwiTk8iPDxlbmRsOwoJCQkJCXByaW50ZigiTk9cbiIpOwoJCQkJfQoJCQkJLy9jb3V0PDx0cmVlWzFdLnN1bTw8Ii0tLS0tLS0tLS0tLSI8PHRyZWVbMV0ubWluc3VtPDxlbmRsOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJbW9kaWZ5KHZhbC0xLDEsMCxuKTsKCQkJfQoJCX0KCX0KCXJldHVybiAwOwp9