#n以下の素数列挙(O(n log(n)) st = set() def primes(n): ass = [] is_prime = [True] * (n + 1) is_prime[0] = False is_prime[1] = False for i in range(2, int(n**0.5) + 1): if not is_prime[i]: continue for j in range(i * 2, n + 1, i): is_prime[j] = False for i in range(len(is_prime)): if is_prime[i]: ass.append(i) st.add(i) return ass T = int(input()) primes(5*10**6+1) for _ in range(T): A, P = map(int, input().split()) ans = 1 if not P in st: print(-1) continue flag = False for p in range(P, 0, -1): ans *= pow(A, p, P) print(ans%P)