N, B = map(int, input().split()) A = list(map(int, input().split())) seen = set() pow2N = pow(2, N, B) pow2 = [2] SIZE = 40 for _ in range(SIZE): pow2.append(pow2[-1] * pow2[-1] % B) ans = [] for a in A: if a not in seen: seen.add(a) size = N - len(seen) r = 1 for shift in range(SIZE): if size >> shift & 1: r *= pow2[shift] r %= B ans.append((pow2N - r) % B) else: ans.append(pow2N) print(*ans, sep="\n")