#include using namespace std; #define int long long #ifdef LOCAL #define __int128 long long #endif // LOCAL const int p=998244353; int po(int a,int b) {if(b==0) return 1; if(b==1) return a; if(b%2==0) {int u=po(a,b/2);return (u*u)%p;} else {int u=po(a,b-1);return (a*u)%p;}} int inv(int x) {return po(x,p-2);} const int maxn=4e5+5; const int sq=600; int c1[sq+1][sq+1];int pr1[sq+1][sq+1]; int fact[maxn];int invf[maxn];int po2[maxn]; int h[maxn];int pr[maxn]; int c(int n,int k) { if(k<0 || n=p) pr1[i][j+1]-=p;} int t;cin>>t; vector > v1,v; int res[t]={0}; for(int cyc=0;cyc>n>>m;v1.push_back({n,m,cyc});} v=v1;sort(v.begin(),v.end()); int cur=0;h[0]=1;pr[1]=1; for(int i=0;i=p) pr[i+1]-=p;} } int di=n-cur; int bo=max(0LL,m-di); __int128 ans=pr[bo]*po2[di]; for(int i=bo;i