#include using namespace std; #include #define elif else if using mint=atcoder::modint998244353; mint pow11[1<<18]; mint pow2[1<<18]; mint node[10][1<<18]; mint calc(mint fL,int Lsize,mint fR,int Rsize){ return fL*pow11[Rsize]+fR*pow2[Lsize]; } void merge(int i,int j){ int L=j; int R=L^(1<<(i-1)); node[i][L]=calc(node[i-1][L],1<<(i-1),node[i-1][R],1<<(i-1)); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin>>n; int N=1<>S; for(int i=0;i>q; for(int tc=0;tc>t; if(t==1){ cin>>x>>y; node[0][x]=y; for(int i=0;i>L>>R>>X; R++; mint res=0; int size=0; for(int i=0;i>i)&1)&&(L+(1<=0;--i){ if(L+(1<