#include using namespace std; long long l,r,n,m,k,s=1,x,y,b[200100],pw[500100],d[500100],po[500100],mo=998244353; struct jg { long long l,r,z; }c[200100]; bool cp(jg a,jg w) { if(b[a.l]==b[w.l]) { return a.r0;y=y/2) { if(y&1) { s=(s*x)%mo; } x=(x*x)%mo; } return s; } long long A(long long x,long long y) { if(x1;i--) { pw[i]=pw[i+1]*(i+1)%mo; } cin>>m; k=n/sqrt(m); k=max(k,1ll); for(int i=1;i<=n;i++) { b[i]=(i-1)/k+1; } for(int i=1;i<=m;i++) { cin>>c[i].l>>c[i].r; c[i].l--; c[i].r--; c[i].z=i; } sort(c+1,c+m+1,cp); l=0; r=0; s=1; for(int i=1;i<=m;i++) { for(;lc[i].r;r--) { jir(); } for(;l>c[i].l;) { l--; jil(); } for(;r