# Mは素数とは限らないので逆元を求めるのは面倒 # Nは超巨大数がありうるが計算できるのか不明 T = int(input()) for t in range(T): N, M = map(int, input().split()) if N == 1: ans = 1%M elif N == 2: ans = 3%M elif N%2 == 1: ans = (N%M)*(((N+1)//2)%M)%M elif N%2 == 0: ans = ((N//2)%M)*((N+1)%M)%M print(ans)