#include #include #include #include #include #include #include #include #include #define fi first #define se second #define ep emplace #define ll long long #define eb emplace_back #define pii pair #define rg(x) x.begin(),x.end() #define pc(x) __builtin_popcount(x) #define rep(i,a,b) for(int i=(a);i<=(b);++i) #define per(i,a,b) for(int i=(a);i>=(b);--i) #define debug(...) fprintf(stderr,__VA_ARGS__) #define FIO(FILE) freopen(FILE".in","r",stdin),freopen(FILE".out","w",stdout) using namespace std; bool __st; inline int read(){ char c=getchar();int f=1,x=0; for(;c<48||c>57;c=getchar())if(c=='-') f=-1; for(;47>=1,a=a*a%mod)if(b&1)r=r*a%mod;return r;} ll C(int n,int m){return fac[n]*inv[m]%mod*inv[n-m]%mod;} void misaka(){ m=read(); rep(i,1,m){ int n=read(),m=read(); ans[i]=qp(2,n)-1; q[i]={m-1,n-1,i}; } sort(q+1,q+m+1); fac[0]=1; rep(i,1,V) fac[i]=fac[i-1]*i%mod; inv[V]=qp(fac[V],mod-2); per(i,V-1,0) inv[i]=inv[i+1]*(i+1)%mod; int l=0,r=0;s=1; rep(i,1,m){ while(rq[i].l){ s=(s-C(r,l)+mod)%mod; l--; } while(r>q[i].r){ s=(s+C(r-1,l))*iv%mod; r--; } while(l