#include using namespace std; const long long mod=998244353; #pragma GCC optimize(2) int t,m,n; long long qpow(long long a,long long b){ if(b==0)return 1; if(b==1)return a; long long t=qpow(a,b/2); return t*t%mod*qpow(a,b%2)%mod; }long long fc[400005]={1},inv[400005]={1}; long long c(int a,int b){ return fc[a]*inv[b]%mod*inv[a-b]%mod; }struct que{ int i,n,m; long long rns; }q[200005]; bool cmp1(que a,que b){ if(a.n!=b.n)return a.n>t; for(int i=1;i<=t;i++)cin>>q[i].n>>q[i].m,q[i].i=i; sort(q+1,q+t+1,cmp1); for(int i=1;i<=t;i++){ int n=q[i].n,m=q[i].m; long long ans=0; if(q[i-1].n==q[i].n){ ans=q[i-1].rns; for(int j=q[i-1].m+1;j<=m;j++)ans=(ans+c(n-1,j-1))%mod; }else for(int i=1;i<=m;i++)ans=(ans+c(n-1,i-1))%mod; q[i].rns=ans; }sort(q+1,q+t+1,cmp2); for(int i=1;i<=t;i++){ long long s=qpow(2,q[i].n); s=(s-1+mod)%mod; cout<