#include using namespace std; const int N = 1e5+5,mod=1e9+7; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar(); return x*f; } int T,n,k,u[N],v[N],vis[N],jie[N],inv[N],vit[N],type,p[N],ans,val; vector>e[N]; namespace S{ inline int dfs(int x,int fa){ int now=jie[e[x].size()-1]; for(auto [t,y] : e[x])if(y^fa)now=1ll*dfs(y,x)*now%mod; return now; } inline int dfs2(int x,int fa,int g){ if(vit[x]){ return g*1ll*inv[e[x].size()-1]%mod*vit[x]%mod; } int w = 0,now=inv[e[x].size()-1]; for(auto [t,y]:e[x])if(y^fa)w=(w+dfs2(y,x,g*1ll*now%mod))%mod; return w; } inline void solve(){ int ans=0,c=0; for(int i = 1;i