#include #define pb(a) push_back(a) #define mp(a,b) make_pair(a,b) #define int long long #define mod (1000000007) using namespace std; inline int read(){ int n=0,s=1; char x=0; while((x=getchar())<'0'||x>'9') if(x=='-') s=-1; while(x>='0'&&x<='9'){ n=n*10+(x^48); x=getchar(); } return n*s; } void write(int n,char x=0){ if(n<0){ putchar('-'); n=-n; } if(n>=10)write(n/10); putchar(n%10+'0'); if(x)putchar(x); } int pw(int a,int b){ int ans=1; while(b){ if(b&1)ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans; } vector >e[100001]; bool vis[100001]; int jc[100001],inv[100001]; int ans; int dfs(int i,int fa){ int sum=0; int m=e[i].size(); for(auto k:e[i]){ int v=k.first,w=k.second; if(v==fa)continue; int x=dfs(v,i); if(vis[w])ans=(ans-x+mod)%mod,x=1; ans=(ans-sum*x%mod+mod)%mod; sum=(sum+x*inv[m-1])%mod; } return sum; } void work(){ int n=read(),m=read(); for(int i=1;i<=n;i++)e[i].clear(),vis[i]=0; for(int i=1;i