#include <iostream>
#include <vector>
using namespace std;
const long long MOD = 998244353;
long long power(long long base, long long exp) {
long long res = 1;
base %= MOD;
while (exp > 0) {
if (exp % 2 == 1) res = (res * base) % MOD;
base = (base * base) % MOD;
exp /= 2;
}
return res;
}
long long modInverse(long long n) {
return power(n, MOD - 2);
}
long long total_sum = 0;
int dfs(int u, int p, const vector<vector<int>>& adj, int N) {
int sz = 1;
for (int v : adj[u]) {
if (v != p) {
int sub_sz = dfs(v, u, adj, N);
sz += sub_sz;
long long cur_edge_contrib = 1LL * sub_sz * (N - sub_sz) % MOD;
total_sum = (total_sum + cur_edge_contrib) % MOD;
}
}
return sz;
}
void solve() {
int N;
long long K;
cin >> N >> K;
vector<vector<int>> adj(N + 1);
for (int i = 0; i < N - 1; ++i) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
total_sum = 0;
dfs(1, 0, adj, N);
long long S = (N + K - 1) % MOD;
long long num = S;
num = (num * ((S + 1) % MOD)) % MOD;
num = (num * ((S + 2) % MOD)) % MOD;
long long den = (N - 1) % MOD;
den = (den * (N % MOD)) % MOD;
den = (den * ((N + 1) % MOD)) % MOD;
long long mult = (num * modInverse(den)) % MOD;
long long ans = (total_sum * mult) % MOD;
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int T;
if (cin >> T) {
while (T--) {
solve();
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNT0QgPSA5OTgyNDQzNTM7Cgpsb25nIGxvbmcgcG93ZXIobG9uZyBsb25nIGJhc2UsIGxvbmcgbG9uZyBleHApIHsKICAgIGxvbmcgbG9uZyByZXMgPSAxOwogICAgYmFzZSAlPSBNT0Q7CiAgICB3aGlsZSAoZXhwID4gMCkgewogICAgICAgIGlmIChleHAgJSAyID09IDEpIHJlcyA9IChyZXMgKiBiYXNlKSAlIE1PRDsKICAgICAgICBiYXNlID0gKGJhc2UgKiBiYXNlKSAlIE1PRDsKICAgICAgICBleHAgLz0gMjsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCmxvbmcgbG9uZyBtb2RJbnZlcnNlKGxvbmcgbG9uZyBuKSB7CiAgICByZXR1cm4gcG93ZXIobiwgTU9EIC0gMik7Cn0KCmxvbmcgbG9uZyB0b3RhbF9zdW0gPSAwOwoKaW50IGRmcyhpbnQgdSwgaW50IHAsIGNvbnN0IHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGFkaiwgaW50IE4pIHsKICAgIGludCBzeiA9IDE7CiAgICBmb3IgKGludCB2IDogYWRqW3VdKSB7CiAgICAgICAgaWYgKHYgIT0gcCkgewogICAgICAgICAgICBpbnQgc3ViX3N6ID0gZGZzKHYsIHUsIGFkaiwgTik7CiAgICAgICAgICAgIHN6ICs9IHN1Yl9zejsKICAgICAgICAgICAgbG9uZyBsb25nIGN1cl9lZGdlX2NvbnRyaWIgPSAxTEwgKiBzdWJfc3ogKiAoTiAtIHN1Yl9zeikgJSBNT0Q7CiAgICAgICAgICAgIHRvdGFsX3N1bSA9ICh0b3RhbF9zdW0gKyBjdXJfZWRnZV9jb250cmliKSAlIE1PRDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gc3o7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgTjsKICAgIGxvbmcgbG9uZyBLOwogICAgY2luID4+IE4gPj4gSzsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqKE4gKyAxKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTiAtIDE7ICsraSkgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgCiAgICB0b3RhbF9zdW0gPSAwOwogICAgZGZzKDEsIDAsIGFkaiwgTik7CiAgICAKICAgIGxvbmcgbG9uZyBTID0gKE4gKyBLIC0gMSkgJSBNT0Q7CiAgICBsb25nIGxvbmcgbnVtID0gUzsKICAgIG51bSA9IChudW0gKiAoKFMgKyAxKSAlIE1PRCkpICUgTU9EOwogICAgbnVtID0gKG51bSAqICgoUyArIDIpICUgTU9EKSkgJSBNT0Q7CiAgICAKICAgIGxvbmcgbG9uZyBkZW4gPSAoTiAtIDEpICUgTU9EOwogICAgZGVuID0gKGRlbiAqIChOICUgTU9EKSkgJSBNT0Q7CiAgICBkZW4gPSAoZGVuICogKChOICsgMSkgJSBNT0QpKSAlIE1PRDsKICAgIAogICAgbG9uZyBsb25nIG11bHQgPSAobnVtICogbW9kSW52ZXJzZShkZW4pKSAlIE1PRDsKICAgIAogICAgbG9uZyBsb25nIGFucyA9ICh0b3RhbF9zdW0gKiBtdWx0KSAlIE1PRDsKICAgIGNvdXQgPDwgYW5zIDw8ICJcbiI7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgaW50IFQ7CiAgICBpZiAoY2luID4+IFQpIHsKICAgICAgICB3aGlsZSAoVC0tKSB7CiAgICAgICAgICAgIHNvbHZlKCk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=