#include<bits/stdc++.h>
using namespace std;
#define ls k<<1
#define rs k<<1|1
#define pushup(k) seg[k]=seg[ls]+seg[rs]
int tt;
int n,m;
char s[200005];
struct segment{
int L,R,sum,lazy;
int sL[2],sR[2];
#define L(k) seg[k].L
#define R(k) seg[k].R
#define sum(k) seg[k].sum
#define lazy(k) seg[k].lazy
#define sL(k,x) seg[k].sL[x]
#define sR(k,x) seg[k].sR[x]
}seg[1000005];
segment operator +(segment x,segment y){
segment k;
L(k)=L(ls),R(k)=R(rs);
if(R(k)-L(k)<=2){
sL(k,0)=num(s[L(k)]),sL(k,1)=num(s[L(k)+1]);
sR(k,0)=num(s[R(k)]),sR(k,1)=num(s[R(k)-1]);
if(s[L(k)]==s[R(k)]) sum(k)=1;
else sum(k)=0;
return k;
}
sL(k,0)=sL(ls,0),sL(k,1)=sL(ls,1);
sR(k,0)=sR(rs,0),sR(k,1)=sR(rs,1);
sum(k)=sum(ls)|sum(rs);
if(sR(ls,0)==sL(rs,0)) sum(k)=1;
if(sR(ls,0)==sL(rs,1)) sum(k)=1;
if(sR(ls,1)==sL(rs,0)) sum(k)=1;
return k;
}
void print(int ans){
if(ans) cout<<"NO\n";
else cout<<"YES\n";
}
int num(char ch){
return ch-'a';
}
void pushdown(int k){
if(lazy(k)){
sL(ls,0)=(sL(ls,0)+lazy(k))%26;
sL(ls,1)=(sL(ls,1)+lazy(k))%26;
sR(ls,0)=(sR(ls,0)+lazy(k))%26;
sR(ls,1)=(sR(ls,1)+lazy(k))%26;
sL(rs,0)=(sL(rs,0)+lazy(k))%26;
sL(rs,1)=(sL(rs,1)+lazy(k))%26;
sR(rs,0)=(sR(rs,0)+lazy(k))%26;
sR(rs,1)=(sR(rs,1)+lazy(k))%26;
lazy(ls)=(lazy(ls)+lazy(k))%26;
lazy(rs)=(lazy(rs)+lazy(k))%26;
lazy(k)=0;
}
}
void build(int k,int l,int r){
L(k)=l,R(k)=r;
if(l==r) return;
int mid=(l+r)>>1;
build(ls,l,mid);
build(rs,mid+1,r);
pushup(k);
}
void add(int k,int l,int r,int x){
if(L(k)>r||R(k)<l) return;
if(L(k)>=l&&R(k)<=r){
sL(k,0)=(sL(k,0)+x)%26;
sL(k,1)=(sL(k,1)+x)%26;
sR(k,0)=(sR(k,0)+x)%26;
sR(k,1)=(sR(k,1)+x)%26;
lazy(k)=(lazy(k)+x)%26;
return;
}
pushdown(k);
add(ls,l,r,x);
add(rs,l,r,x);
pushup(k);
}
segment ask(int k,int l,int r){
if(L(k)>=l&&R(k)<=r) return seg[k];
return ask(ls,l,r)+ask(rs,l,r);
}
void solve(){
cin>>n>>m;
cin>>(s+1);
build(1,1,n);
for(int i=1;i<=m;i++){
int op,l,r,x;
cin>>op;
if(op&1){
cin>>l>>r>>x;
x%=26;
if(x) add(1,l,r,x);
}else{
cin>>l>>r;
print(ask(1,l,r));
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>tt;
while(tt--) solve();
return 0;
}