#include #define int long long using namespace std; const int inf=1e18; bool M1; int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int N=4e5+5; const int B=500; const int mod=998244353; struct Node{ int l,r,id; }a[N]; int q,bel[N],_ans[N],L,R,ans; struct _C{ int fac[N],inv[N]; void work(){ fac[0]=1;fac[1]=1; inv[0]=1;inv[1]=1; for(int i=2;i<=400000;i++)fac[i]=fac[i-1]*i%mod; for(int i=2;i<=400000;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod; for(int i=2;i<=400000;i++)inv[i]*=inv[i-1],inv[i]%=mod; } int C(int _n,int _m){ if(_n<_m)return 0; if(!_m)return 1; return fac[_n]*inv[_m]%mod*inv[_n-_m]%mod; } }T1; bool cmp(Node xxx,Node yyy){ if(bel[xxx.l]!=bel[yyy.l])return xxx.la[i].l)add1(--L),print(L,R); while(R>a[i].r)del2(R--),print(L,R); _ans[a[i].id]=ans*bs[R]%mod; // cout<