/*
*DIV 2 C.
*LINK:
*nilabja10201992
*/
#include <bits/stdc++.h>
using namespace std;
#define inf (1<<30)
#define INF (int)1e9
#define EPS 1e-9
#define PI 3.1415926535897932384626433832795
#define MOD 1000000007
#define MAX 1000000
struct node{
int open;
int close;
void initialize(char val){
if(val=='('){
open=1;
close=0;
}
else{
open=0;
close=1;
}
}
void merge(node &A,node &B){
int mn=min(A.open,B.close);
open=A.open-mn+B.open;
close=B.close+A.close-mn;
}
}st[MAX];
string arr;
void init(int idx,int l,int r){
if(l==r){
st[idx].initialize(arr[l]);
return;
}
else {
int m=(l+r)/2;
init(idx*2+1,l,m);
init(idx*2+2,m+1,r);
st[idx].merge(st[idx*2+1],st[idx*2+2]);
}
}
void update(int idx,int l,int r,int i,char val){
if(l==r && l==i){
st[idx].initialize(val);
return;
}
else{
int m=(l+r)/2;
if(i<=m)
update(idx*2+1,l,m,i,val);
if(i>m)
update(idx*2+2,m+1,r,i,val);
st[idx].merge(st[idx*2+1],st[idx*2+2]);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
for(int t=0;t<10;t++){
int n;
cin>>n;
arr.clear();
memset(st,0,sizeof(st));
cin>>arr;
// cout<<arr<<endl;
init(0,0,n-1); //Initialise tree
int q;
cin>>q;
cout<<"Test "<<t+1<<':'<<endl;
while(q--){
// cout<<"c"<<endl;
int f;
cin>>f;
if(f==0){
if(!st[0].open && !st[0].close) //query node
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
else{
if(arr[f-1]=='(')
arr[f-1]=')';
else
arr[f-1]='(';
update(0,0,n-1,f-1,arr[f-1]); //update node
}
/* for(int i=0;i<n<<1;i++)
cout<<st[i].open<<" "<<st[i].close<<" "<<i<<endl;
cout<<endl;*/
}
}
//cout<<"Execution time : "<<tick();
return 0;
}
LyoKKkRJViAyIEMuCipMSU5LOgoqbmlsYWJqYTEwMjAxOTkyCiovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbmYgKDE8PDMwKQojZGVmaW5lIElORiAoaW50KTFlOQojZGVmaW5lIEVQUyAxZS05CiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBNQVggMTAwMDAwMAoKc3RydWN0IG5vZGV7CglpbnQgb3BlbjsKCWludCBjbG9zZTsKCQoJdm9pZCBpbml0aWFsaXplKGNoYXIgdmFsKXsKCSAgICBpZih2YWw9PScoJyl7CgkgICAgICAgIG9wZW49MTsKCSAgICAgICAgY2xvc2U9MDsKCSAgICB9CgkgICAgZWxzZXsKCSAgICAgICAgb3Blbj0wOwoJICAgICAgICBjbG9zZT0xOwoJICAgIH0KCX0KCXZvaWQgbWVyZ2Uobm9kZSAmQSxub2RlICZCKXsKCSAgICBpbnQgbW49bWluKEEub3BlbixCLmNsb3NlKTsKCSAgICBvcGVuPUEub3Blbi1tbitCLm9wZW47CgkgICAgY2xvc2U9Qi5jbG9zZStBLmNsb3NlLW1uOwoJfQp9c3RbTUFYXTsKc3RyaW5nIGFycjsKdm9pZCBpbml0KGludCBpZHgsaW50IGwsaW50IHIpewoJaWYobD09cil7CgkJCXN0W2lkeF0uaW5pdGlhbGl6ZShhcnJbbF0pOwoJCSAgICByZXR1cm47Cgl9CgllbHNlIHsKCQlpbnQgbT0obCtyKS8yOwoJCWluaXQoaWR4KjIrMSxsLG0pOwoJCWluaXQoaWR4KjIrMixtKzEscik7CgkJc3RbaWR4XS5tZXJnZShzdFtpZHgqMisxXSxzdFtpZHgqMisyXSk7Cgl9Cn0KCnZvaWQgdXBkYXRlKGludCBpZHgsaW50IGwsaW50IHIsaW50IGksY2hhciB2YWwpewoJaWYobD09ciAmJiBsPT1pKXsKCQlzdFtpZHhdLmluaXRpYWxpemUodmFsKTsKCQlyZXR1cm47Cgl9CgllbHNlewoJCWludCBtPShsK3IpLzI7CgkJaWYoaTw9bSkKCQkJdXBkYXRlKGlkeCoyKzEsbCxtLGksdmFsKTsKCQlpZihpPm0pCgkJCXVwZGF0ZShpZHgqMisyLG0rMSxyLGksdmFsKTsKCQlzdFtpZHhdLm1lcmdlKHN0W2lkeCoyKzFdLHN0W2lkeCoyKzJdKTsKCX0KfQoKaW50IG1haW4oKSB7CiAgICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgICBjaW4udGllKE5VTEwpOwoJZm9yKGludCB0PTA7dDwxMDt0KyspewoJCWludCBuOwoJCWNpbj4+bjsKCQlhcnIuY2xlYXIoKTsKCQltZW1zZXQoc3QsMCxzaXplb2Yoc3QpKTsKCQljaW4+PmFycjsKCS8vCWNvdXQ8PGFycjw8ZW5kbDsKCQlpbml0KDAsMCxuLTEpOwkJCQkvL0luaXRpYWxpc2UgdHJlZQoJCWludCBxOwoJCWNpbj4+cTsKCQljb3V0PDwiVGVzdCAiPDx0KzE8PCc6Jzw8ZW5kbDsKCQl3aGlsZShxLS0pewoJCSAgIC8vIGNvdXQ8PCJjIjw8ZW5kbDsKCQkJaW50IGY7CgkJCWNpbj4+ZjsKCQkJaWYoZj09MCl7CgkJCQlpZighc3RbMF0ub3BlbiAmJiAhc3RbMF0uY2xvc2UpCQkJCS8vcXVlcnkgbm9kZQoJCQkJCWNvdXQ8PCJZRVMiPDxlbmRsOwoJCQkJZWxzZQoJCQkJCWNvdXQ8PCJOTyI8PGVuZGw7CgkJCX0KCQkJZWxzZXsKCQkJCWlmKGFycltmLTFdPT0nKCcpCgkJCQkJYXJyW2YtMV09JyknOwoJCQkJZWxzZQoJCQkJCWFycltmLTFdPScoJzsKCQkJCXVwZGF0ZSgwLDAsbi0xLGYtMSxhcnJbZi0xXSk7CQkJCQkgLy91cGRhdGUgbm9kZQoJCQl9CgkJLyoJZm9yKGludCBpPTA7aTxuPDwxO2krKykKCQkJCWNvdXQ8PHN0W2ldLm9wZW48PCIgIjw8c3RbaV0uY2xvc2U8PCIgIjw8aTw8ZW5kbDsKCQkJY291dDw8ZW5kbDsqLwoJCX0KCX0KCS8vY291dDw8IkV4ZWN1dGlvbiB0aW1lIDogIjw8dGljaygpOwogICAgICByZXR1cm4gMDsKfQo=