记录: link
#include <stdio.h>
#include <ctype.h>
#include <algorithm>
#include <string.h>
#include <set>
#define lnt long long
#define inf 0x3f3f3f3f
using namespace std;
int xx;char ff,chh;inline int read(){
xx=ff=0;while(!isdigit(chh)){if(chh=='-'){ff=1;}chh=getchar();}
while(isdigit(chh)){xx=(xx<<1)+(xx<<3)+chh-'0';chh=getchar();}return ff? -xx: xx;
}
char chc;char gc(){chc=getchar();if(chc==10 || chc=='\r' || chc==' '){chc=getchar();}return chc;}
const int N=2e3;
struct node{
int l,r;mutable char v;
node(int _l,int _r=-1,char _v=0):l(_l),r(_r),v(_v){}
bool friend operator <(const node &v,const node &u){return v.l<u.l;}
};
#define It set<node>::iterator
set<node> s;
int n;
It split(int pos){
It it=s.lower_bound(node(pos));
if(it==s.end() || it->l==pos){return it;}
--it;
int l=it->l,r=it->r;char v=it->v;
s.erase(it);
s.insert(node(l,pos-1,v));
return s.insert(node(pos,r,v)).first;
}
void change(int l,int r,char v){
It itr=split(r+1),itl=split(l);
s.erase(itl,itr);
s.insert(node(l,r,v));
}
bool check(int l,int r){
It itr=split(r+1),itl=split(l);
if(l!=1 && r!=n){
It templ=--itl;itl++;
if((templ)->v==(itr)->v){return false;}
}
char v=itl->v;
for(It it=++itl;it!=itr;++it){if(it->v!=v){return false;}}
return true;
}
int main(){
n=read();
for(int i=1;i<=n;++i){
change(i,i,gc());
}
int G=read();
while(G--){
char t=gc();
if(t=='A'){
int l=read(),r=read();
change(l,r,gc());
}else{
int l=read(),r=read();
puts(check(l,r)? "Yes": "No");
}
}
return 0;
}