#include using namespace std; #define int long long typedef pair P; int INF = 1e16+7; int mod = 1e9+7; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; int mod_pow(int x,int y,int MOD) { int res = 1; while(y > 0) { if(y%2) { res = res*x%MOD; } x = x*x%MOD; y/=2; } return res; } signed main() { vectorcnt(5000005,true); cnt[0] = cnt[1] = false; for(int i = 2; i <= 5000005; i++) { if(!cnt[i]) { continue; } for(int j = i*2; j <= 5000005; j+=i) { cnt[j] = false; } } int T; cin >> T; for(int i = 0; i < T; i++) { int A,P; cin >> A >> P; if(!cnt[P]) { cout << -1 << endl; continue; } int cnt = 1; for(int i = 2; i <= P; i++) { cnt*=i; cnt%=P; } cout << mod_pow(A,cnt,P) << endl; } }