#include using namespace std; #define int long long namespace IO { char ibuf,buf[8888888],*p1=buf,*p2=buf; #define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<23,stdin),*p2=0),*p1++) int rd(int x=0) { for(;!isdigit(ibuf);ibuf=getchar()); for(;isdigit(ibuf);ibuf=getchar())x=x*10+(ibuf^48); return x; } int rds(char*s,int x=0) { for(;!isgraph(ibuf);ibuf=getchar()); for(;isgraph(ibuf);ibuf=getchar())s[x++]=ibuf; s[x]=0;return x; } } using IO::rd;using IO::rds; const int mod=1000000007; int inv[100010]; int js[100010]; int qpow(int a,int b) { int res=1; for(;b;b>>=1,a=a*a%mod)if(b&1)res=res*a%mod; return res; } vectorv[100010]; int a[100010],b[100010]; int pa[100010]; bool ok[100010]; int stdans=1,ans=0; void dfs1(int x,int p) { pa[x]=p; for(int y:v[x])if(y^p)dfs1(y,x); } int dfs(int x,int p) { int sum=0; for(int y:v[x])if(y^p) { int q=dfs(y,x); ans=(ans-sum*q%mod*stdans%mod+mod)%mod; sum=(sum+q*inv[v[x].size()-1])%mod; } if(ok[x])ans=(ans-sum*stdans%mod+mod)%mod,sum=1; return sum; } void slv() { int n=rd(),k=rd(); for(int i=1;i<=n;i++)v[i].clear(); for(int i=1;i<=n;i++)ok[i]=0; for(int i=1;i=1;i--)inv[i-1]=inv[i]*i%mod; for(int i=1;i<=n;i++)inv[i]=inv[i]*js[i-1]%mod; int c=rd(),T=rd(); while(T--)slv(); return 0; }