#include using namespace std; const int N=2e5+5,B=447; const int P=998244353,I=499122177; int n,ans[N]; int fac[N],inv[N]; struct ques{int m,k,id;}a[N]; bool cmp(ques x,ques y){ return x.m/B!=y.m/B?x.m>=1,x=1ll*x*x%P) if(y&1)z=1ll*z*x%P; return z; }void init(){ const int n=1e5; fac[0]=inv[0]=1; for(int i=1;i<=n;++i) fac[i]=1ll*fac[i-1]*i%P, inv[i]=qp(fac[i],P-2); }int C(int n,int m){ if(n<0||m<0||n>m)return 0; return 1ll*fac[m]*inv[n]%P*inv[m-n]%P; }void add(int &x,int y){ x+=y;if(x>=P)x-=P; }signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>n;init(); for(int i=1;i<=n;++i) cin>>a[i].m>>a[i].k,a[i].id=i, --a[i].m,--a[i].k; sort(a+1,a+n+1,cmp); int m=0,k=0,sum=1; for(int i=1;i<=n;++i){ int M=a[i].m,K=a[i].k; while(kK)add(sum,P-C(k,m)),k--; while(mM)--m,sum=1ll*I*(sum+C(k,m))%P; ans[a[i].id]=1ll*sum*(qp(2,M+1)-1)%P; }for(int i=1;i<=n;++i) cout<