MOD = 998244353 MAX_N = 5000 inv = [0] * (MAX_N + 1) for i in range(1, MAX_N + 1): inv[i] = pow(i, -1, MOD) def exp_all(N): exp = 0 for i in range(1, N + 1): exp += N * inv[i] % MOD exp %= MOD return exp def solve(): N, L = [int(x) for x in input().split()] D = set([int(d) for d in input().split()]) if L % 2 == 1: print(exp_all(N)) return diameters = 0 normals = 0 for d in D: if (d + L // 2) % L in D: diameters += 1 else: normals += 1 diameters //= 2 if diameters <= 1: print(exp_all(N)) return dp = [[[0] * (normals + 1) for _ in range(diameters + 1)] for _ in range(3)] for i in range(1, -1, -1): for j in range(diameters, -1, -1): for k in range(normals, -1, -1): remain = N - i - j - k exp = (i + j + k) * inv[remain] % MOD if j > i: exp += (dp[i + 1][j][k] + 1) * (j - i) % MOD * inv[remain] % MOD exp %= MOD if j < diameters: exp += (dp[i][j + 1][k] + 1) * 2 * (diameters - j) % MOD * inv[remain] % MOD exp %= MOD if k < normals: exp += (dp[i][j][k + 1] + 1) * (normals - k) % MOD * inv[remain] % MOD exp %= MOD dp[i][j][k] = exp print(dp[0][0][0]) if __name__ == "__main__": T = int(input()) for _ in range(T): solve()