#include #include #include using namespace atcoder; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000 int main(){ int _t; cin>>_t; rep(_,_t){ int n,m; cin>>n>>m; int mm = m; if(n>=m){ cout<<0<> ps; for(int i=2;i*i<=m;i++){ if(m%i==0){ ps.emplace_back(i,0); while(m%i==0){ m/=i; ps.back().second++; } } } if(m!=1)ps.emplace_back(m,1); m = mm; bool f = true; rep(i,ps.size()){ int cur = 0; int tmp = 0; while(cur!=0){ tmp += cur / ps[i].first; cur /= ps[i].first; } if(cur < ps[i].second)f = false; } if(f){ cout<<0<=n+1;i--){ ans *= inv_mod(i,m); ans %= m; } } else{ ans = 1LL; for(int i=1;i<=n;i++){ ans *= i; ans %= m; } } cout<