#include using namespace std; #include using mint = atcoder::modint998244353; void solve() { int N, L; cin >> N >> L; vector D(N); for (int& d : D) cin >> d; int C = 0; if (L%2 == 0) { for (int d : D) { int op = d + L/2; if (binary_search(D.begin(), D.end(), op)) C++; } } if (C <= 1) { //最後まで mint ans = 0; for (int i = 1; i <= N; i++) ans += mint(N) / i; cout << ans.val() << endl; return; } vector dp(3, vector(C+1, 0)); for (int i = 2; i >= 0; i--) { for (int j = C; j >= 0; j--) { if (i > j) continue; if (i == 2) { dp[i][j] = 0; continue; } dp[i][j] = 1; if (j < C) dp[i][j] += mint(2 * (C - j)) / N * dp[i][j+1]; if (i < j) dp[i][j] += mint(j - i) / N * dp[i+1][j]; dp[i][j] *= mint(N) / (2 * C - i - j); } } cout << dp[0][0].val() << endl; } int main() { int T; cin >> T; while(T--) solve(); }