#include<cstring> #include<iostream> usingnamespace std; constint N = 2e5 + 5, mod = 1e9 + 7; int hd[N], nxt[N * 2], to[N * 2], num = 1; voidadd(int u, int v){ num++; to[num] = v; nxt[num] = hd[u]; hd[u] = num; } int sz[N]; voiddfs(int u, int fa){ sz[u] = 1; for (int i = hd[u]; i; i = nxt[i]) { int v = to[i]; if (v == fa) continue; dfs(v, u); sz[u] += sz[v]; } } longlongfpow(longlong x, longlong y){ longlong res = 1; while (y) { if (y & 1) res = res * x % mod; x = x * x % mod; y >>= 1; } return res; } int n; longlong f[N]; voiddfs2(int u, int fa){ for (int i = hd[u]; i; i = nxt[i]) { int v = to[i]; if (v == fa) continue; f[v] = f[u] * sz[v] % mod * fpow(n - sz[v], mod - 2) % mod; dfs2(v, u); } } intmain(){ int t; cin >> t; while (t--) { cin >> n; num = 1; memset(hd, 0, sizeof(hd)); for (int i = 1; i <= n - 1; i++) { int u, v; cin >> u >> v; add(u, v); add(v, u); } dfs(1, 0); longlong fz = 1; // 分子 for (int i = 1; i <= n; i++) { fz = fz * i % mod; } longlong fm = 1; // 分母 for (int i = 1; i <= n; i++) { fm = fm * sz[i] % mod; } f[1] = fz * fpow(fm, mod - 2) % mod; dfs2(1, 0); longlong ans = 0; for (int i = 1; i <= n; i++) { ans += f[i]; ans %= mod; } fm = 1; for (int i = 1; i <= n - 1; i++) fm = fm * i % mod; for (int i = 1; i <= n; i++) fm = fm * i % mod; cout << ans * fpow(fm, mod - 2) % mod << endl; } return0; }