import itertools from collections import deque def inverse_perm(p): inv = [0] * len(p) for i, val in enumerate(p): inv[val - 1] = i + 1 return tuple(inv) def reverse_perm(p): return tuple(reversed(p)) def generate_orbit(p): visited = set() queue = deque([p]) while queue: current = queue.popleft() if current in visited: continue visited.add(current) inv = inverse_perm(current) rev = reverse_perm(current) if inv not in visited: queue.append(inv) if rev not in visited: queue.append(rev) return visited def total_score_modulo(n, m): perms = list(itertools.permutations(range(1, n + 1))) visited_global = set() total = 0 for p in perms: if p in visited_global: continue orbit = generate_orbit(p) orbit_size = len(orbit) total += orbit_size * len(orbit) visited_global.update(orbit) return total % m T, M = map(int, input().split()) for _ in range(T): N = int(input()) print(total_score_modulo(N, M))