#include using namespace std; const int MOD = 998244353; int mult(int x, int y) { return int64_t(x) * y % MOD; } int main(int argc, char **argv) { cin.sync_with_stdio(false), cin.tie(nullptr); int t; cin >> t; while (t--) { int n; cin >> n; vector> g(n); for (int i = 0; i < n - 1; i++) { int x, y; cin >> x >> y; --x, --y; g[x].push_back(y); g[y].push_back(x); } int ans = 0, cnt = 0; for (int i = 0; i < n; i++) { queue que; vector dep(n, 0); vector vis(n, false); que.push(i), vis[i] = true; while (!que.empty()) { int u = que.front(); que.pop(); for (int v : g[u]) { if (!vis[v]) { que.push(v); dep[v] = dep[u] + 1; vis[v] = true; } } } int d = *max_element(dep.begin(), dep.end()) + 1; if (ans > d) { continue; } vector counter(d, 0); for (auto x : dep) { counter[x]++; } int cur = 1; for (auto x : counter) { cur = mult(cur, x); } for (int j = 0; j < i; j++) { if (dep[j] == d - 1) { --cur; } } if (ans < d) { ans = d, cnt = cur; } else if (ans == d) { cnt = (cnt + cur) % MOD; } } cout << ans << " " << cnt << "\n"; } }