mod = 998244353 class Comb: __slots__ = ["fac", "finv", "mod"] def __init__(self, lim:int, mod:int = mod): """ mod : prime """ self.fac = [1]*(lim+1) self.finv = [1]*(lim+1) self.mod = mod for i in range(2,lim+1): self.fac[i] = self.fac[i-1]*i%self.mod self.finv[lim] = pow(self.fac[lim],-1,mod) for i in range(lim,2,-1): self.finv[i-1] = self.finv[i]*i%self.mod def C(self, a, b): if b < 0 or a < b: return 0 if a < 0: return 0 return self.fac[a]*self.finv[b]%self.mod*self.finv[a-b]%self.mod def __call__(self, a, b): if b < 0 or a < b: return 0 if a < 0: return 0 return self.fac[a]*self.finv[b]%self.mod*self.finv[a-b]%self.mod def P(self, a, b): if b < 0 or a < b: return 0 if a < 0: return 0 return self.fac[a]*self.finv[a-b]%self.mod def H(self, a, b): return self.C(a+b-1,b) def F(self, a): return self.fac[a] def Fi(self, a): return self.finv[a] lim = 5010 comb = Comb(lim) p2 = [1] * (lim + 1) for i in range(lim): p2[i+1] = 2 * p2[i] % mod def solve(): n, l = map(int, input().split()) d = list(map(int, input().split())) if l & 1: ans = 0 for i in range(n): ans += pow(n - i, -1, mod) ans %= mod print(n * ans % mod) return h = l // 2 c = [0] * h for x in d: c[x%h] += 1 c1 = c.count(1) c2 = c.count(2) ans = 0 for p in range(n): tmp = 0 for q in range(0, p+1): t1 = comb.P(c1, p-q) * comb.P(c2, q) % mod * p2[q] % mod tmp %= mod t1 += comb.P(c1, p-q) * q * (q - 1) * c2 % mod * comb.P(c2-1, q-2) % mod * p2[q-2] % mod tmp += t1 * comb(p, q) % mod ans += tmp * comb.F(n-p) % mod * n % mod * pow(n - p, -1, mod) % mod ans %= mod print(ans * comb.Fi(n) % mod) return t = int(input()) for i in range(t): solve()