#include #define int long long using namespace std; const int N=200010; const int mod=1e9+7; int n; int a[N]; int id[N]; vectorG[N]; vectorT[N]; bool cmp(int x,int y){ return a[x]>n; for(int i=1;i<=n;i++)cin>>r[i]; for(int i=1;i<=n;i++)fa[i]=i; for(int i=1;i>u>>v; G[u].push_back(v); G[v].push_back(u); } for(int i=1;i<=n;i++)id[i]=i; sort(id+1,id+n+1,cmp); for(int i=1;i<=n;i++){ for(auto v:G[i]){ if(v>i)continue; int t=find(v); if(i==t)continue; T[i].push_back(t); merge(t,i); } dp[find(i)]++; } dfs(n); int ans=1; for(int i=1;i<=n;i++)ans=ans*(r[i]+dp[i])%mod; cout<