#include using namespace std; const int mod=1e9+7; const int N=1e5+10; int n,m,inv[N],jc[N]; #define pi pair #define fi first #define se second #define pb push_back vectorg[N]; int ans,su[N]; bool vis[N]; void ad(int &x,int y){ x+=y;if(x>=mod)x-=mod; } void dfs(int x,int f){ int P=inv[g[x].size()-1]; for(pi e:g[x]){ int v=e.fi,w=e.se;if(v==f)continue; dfs(v,x); if(vis[w])ad(ans,mod-su[v]),su[v]=1; ad(ans,mod-1ll*su[x]*su[v]%mod*P%mod),ad(su[x],su[v]); } su[x]=1ll*su[x]*P%mod; } void rd(int &x){ x=0;char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); } void wrt(int x){ if(x<10){putchar(x+'0');return;} wrt(x/10),putchar((x%10)+'0'); } void sol(){ rd(n),rd(m);inv[1]=1; for(int i=2;i<=n;i++)inv[i]=mod-1ll*inv[mod%i]*(mod/i)%mod; jc[0]=1;for(int i=1;i<=n;i++)jc[i]=1ll*i*jc[i-1]%mod,su[i]=0,g[i].clear(),vis[i]=0; for(int i=1,u,v;i