# -*- coding=utf-8 -*- # 【考察】 def arithmetic_progression_summary(a_1 = 1, a_n = 10, d = 1): """等差数列の和を計算する(a_nは一般的な項数ではなくて末項を指定する)\n a_1 = 1 a_n = 10 d = 1 => Σ[k=1, n=10] k => 55 Args: a_1 (int): 初項。 a_n (int): 末項。 d (int): 公差。 """ # a_n(末項)の項数を計算 n = a_n - a_1 + d # nが割り切れなかった場合末項の指定を間違えている if n % d != 0: return -1 n = n // d result = ((a_1 * 2) + (n * d - d)) * n result = result // 2 return result if __name__ == "__main__": Q = int(input()) for q in range(Q): n, m = list(map(int, input().split(" "))) a = arithmetic_progression_summary(1, n, 1) print(a % m)