#include using namespace std; int read(){ int x=0;char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=x*10+(c^'0'),c=getchar(); return x; } #define ll long long const ll mod=1e9+7,inv2=(mod+1)/2; int n,m; vector edge[100005]; int ex[100005],ey[100005]; int vis[100005]; int fa[100005],deg[100005]; ll dp[100005],ans; ll fac[100005],inv[100005]; ll power(ll a,ll p){ ll res=1; while(p){ if(p&1)res=res*a%mod; p>>=1,a=a*a%mod; } return res; } void dfs1(int x,int f){ fa[x]=f; for(int y:edge[x])if(y!=f)dfs1(y,x); } void dfs2(int x,int f){ dp[x]=0; for(int y:edge[x])if(y!=f){ dfs2(y,x); ans=(ans+dp[y]*dp[x]%mod*inv[deg[x]-1]%mod)%mod; if(vis[y]){ ans=(ans-dp[y]-1+mod)%mod; ans=(ans-(dp[y]+1)*dp[x]%mod*inv[deg[x]-1]%mod+mod)%mod; dp[x]=(dp[x]-dp[y]-1+mod)%mod; } dp[x]=(dp[x]+dp[y])%mod; } dp[x]=dp[x]*inv[deg[x]-1]%mod; } void solve(){ n=read(),m=read(); fac[0]=1; for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod; inv[n]=power(fac[n],mod-2); for(int i=n;i>=1;i--)inv[i-1]=inv[i]*i%mod; for(int i=1;i<=n;i++)inv[i]=inv[i]*fac[i-1]%mod; for(int i=1;i<=n;i++)edge[i].clear(); for(int i=1;i