#include using namespace std; using ll = long long; #define FOR(i, n) for (ll i = 0; (i) < (ll)(n); ++(i)) #define FOR3(i, m, n) for (ll i = (m); (i) < (ll)(n); ++(i)) #define FOR_R(i, n) for (ll i = (ll)(n)-1; (i) >= 0; --(i)) #define FOR3_R(i, m, n) for (ll i = (ll)(n)-1; (i) >= (ll)(m); --(i)) template void dump(T x){ cout<0){ q=r0/r1; r2=r0%r1; a2=a0-q*a1; b2=b0-q*b1; r0=r1; r1=r2; a0=a1; a1=a2; b0=b1; b1=b2; } *c=r0; *a=a0; *b=b0; } ll get_inv(ll n, ll p){ ll a,b,c; extended_euclid(n,p,&c,&a,&b); if(a>N>>M; if(N>=M) return dump(0); if(N<=300000){ ll res=1%M; FOR3(i,1,N+1) res=res*i%M; return dump(res); } FOR3(i,2,sqrt(M)+1){ if(M%i==0) return dump(0); } ll res=M-1; ll mul=1; FOR3_R(i,N+1,M){ mul=mul%i%M; } dump(res*get_inv(mul,M)%M); } int main(){ ios::sync_with_stdio(0); cin.tie(0); int t=1; cin>>t; for(;t--;) solve(); }