#include #include using namespace std; using mint=atcoder::modint998244353; template struct xor_segtree { xor_segtree():xor_segtree(0){} xor_segtree(int n_):xor_segtree(vector(n_,e())){} xor_segtree(const vector&v):n((int)v.size()) { log=0; while((1<(sz,e())); for(int i=0;i>=1,r>>=1,d++; } while(l>node; void update(int i, int j){node[i+1][j]=op(node[i][j],node[i][j^(1<op(paira, pairb) { auto[xa,sa]=a; auto[xb,sb]=b; return make_pair(xa*p11[sb]+xb*p2[sa],sa+sb); } paire(){return make_pair(0,0);} int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; string S; cin>>N>>S; N=1<>A(N); for(int i=0;i,op,e>seg(A); int Q; cin>>Q; while(Q--) { int t; cin>>t; if(t==1) { int p,x; cin>>p>>x; seg.set(p,make_pair(x,1)); } else { int l,r,x; cin>>l>>r>>x; cout<