//Δ_1006 #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef double DB; const int N = 111111; const int MO = 1e9+7; void ad(int&x,int y){ x+=y; if(x>=MO) x-=MO; } int mul(int x,int y){ return (LL)x*y%MO; } int fpow(int x,int y=MO-2){ int z=1; while(y){ if(y&1) z=mul(z,x); x=mul(x,x); y>>=1; } return z; } int inv[N]; int n,m,a[N],f[N]; vector v[N]; void dfs(int u){ int i=v[u].size(),x; while(i--){ x=v[u][i]; if(x==f[u]) continue; f[x]=u; dfs(x); } } int cal(int x){ if(x==1){ if(a[x]==1) return 0; return 1; } return mul(a[x]-2,inv[a[x]-1]); } int main() { int T,i,x,y,o,s; for(i=1;i