#include<atcoder/segtree>#include<bits/stdc++.h>usingnamespacestd;usingnamespaceatcoder;intop(inta,intb){returna+b;}inte(){return0;}voidsolve(){intn,q;cin>>n>>q;stringstr;cin>>str;segtree<int,op,e>st(n+5);st.set(0,1);for(inti=1;i<n;i++){intx=str[i]-'0';inty=str[i-1]-'0';st.set(i,x^y);}for(intzz=0;zz<q;zz++){inttype,L,R;cin>>type>>L>>R;L--;R--;if(type==1){st.set(L,1^st.get(L));st.set(R+1,1^st.get(R+1));}if(type==2){// Atcoder's segtre returns answer for range [o, c)
// We query the answer for [L + 1 ... R]
intdiff_count=st.prod(L+1,R+1);if(diff_count==R-L){cout<<"Yes"<<"\n";}else{cout<<"No"<<"\n";}}}}intmain(){solve();return0;}