#include using namespace std; constexpr int M=1e5+5,mod=1e9+7; int n,k,ans,fac[M],deg[M],val[M],inv[M]; vector>adj[M];bool vis[M]; int read(){ int x=0;char ch=getchar(); while (!isdigit(ch)) ch=getchar(); while (isdigit(ch)) x=x*10+ch-48,ch=getchar(); return x; } int rdc(int x){return x>=mod?x-mod:x;} void dfs(int x,int f){ for (auto [y,z]:adj[x]){ if (y==f) continue; dfs(y,x); if (vis[z]) ans=rdc(ans+mod-val[y]),val[y]=1; } int sum=0; for (auto [y,z]:adj[x]){ if (y==f) continue; ans=rdc(ans+mod-1ll*val[y]*sum%mod*inv[deg[x]-1]%mod); sum=rdc(sum+val[y]); } val[x]=1ll*sum*inv[deg[x]-1]%mod; } void solve(){ n=read();k=read(); for (int i=1;i<=n;i++) adj[i].clear(); inv[1]=1; for (int i=fac[0]=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mod; for (int i=2;i<=n;i++) inv[i]=1ll*inv[mod%i]*(mod-mod/i)%mod; for (int i=1;i