from collections import defaultdict mod = 998244353 lim = 10 ** 6 f = [1] * lim invf = [1] * lim inv = [1] * lim p2 = [1] * lim p2[1] = 2 for i in range(2, lim): f[i] = f[i-1] * i % mod inv[i] = -inv[mod%i] * (mod//i) % mod invf[i] = invf[i-1] * inv[i] % mod p2[i] = p2[i-1] * 2 % mod def comb(n, r): return f[n] * invf[n-r] % mod * invf[r] % mod def solve(): n, l = [int(x) for x in input().split()] d = [int(x) for x in input().split()] # 直径をなすペアの個数 pair = 0 if l % 2 == 0: cnt = defaultdict(int) for x in d: cnt[x%(l//2)] += 1 for c in cnt.values(): if c == 2: pair += 1 ans = 0 if pair <= 1: for i in range(1, n + 1): ans += n * inv[i] % mod print(ans % mod) return one = n - pair * 2 ans += n * inv[2*pair] % mod for c in range(1, pair + 3): q = n * inv[2*pair-c] % mod t = 0 if 1 <= c <= pair: t += comb(pair, c) * p2[c] % mod if 2 <= c <= pair + 1: t += pair * comb(pair-1, c-2) * p2[c-2] % mod t = t * pow(comb(2*pair, c), -1, mod) % mod ans += t * q % mod print(ans % mod) t = int(input()) for i in range(t): solve()