#include #include #include #include #include using namespace std; struct dat{ int mx; long S; }; dat op(dat a,dat b) { if(a.mx==-1)return b; if(b.mx==-1)return a; if(a.mx==-2)return(dat){-2,0L}; if(b.mx==-2)return(dat){-2,0L}; if(a.mxmk(int a) { int k=0; while(a%2==0)a/=2,k++; return make_pair(a,k); } pairop_minmax(pairl,pairr) { l.first=max(l.first,r.first); l.second=min(l.second,r.second); return l; } paire_minmax(){return make_pair(-(int)1e9,(int)1e9);} int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N,Q;cin>>N>>Q; vector >init_minmax(N); vectorinit(N); atcoder::fenwick_treeBIT(N); vectorK(N); for(int i=0;i>A; auto[a,k]=mk(A); K[i]=k; BIT.add(i,1L<seg(init); atcoder::segtree,op_minmax,e_minmax>seg_minmax(init_minmax); for(;Q--;) { int t;cin>>t; if(t==1) { int i,x;cin>>i>>x;i--; auto[a,k]=mk(x); BIT.add(i,(1L<>l>>r;l--; auto p=seg_minmax.prod(l,r); if(p.first!=p.second)cout<<"No\n"; else { long sum=BIT.sum(l,r); if(sum!=(sum&-sum))cout<<"No\n"; else { dat t=seg.prod(l,r); long S=BIT.sum(0,l); cout<<(t.mx==-2||t.S!=(S&(1L<