T457038 跳跃

题目描述

有一颗$n$个点以$1$为根的树。树上每个结点有一个权值$val$。 白云想从$1$号节点出发开始跳跃,跳跃的规则是:如果两个点$a,b$满足$a$是$b$的祖先且$val[a]$是$val[b]$的倍数,则白云可以从$a$一步跳到$b$。 现在,你需要帮助白云求出,对于每一个点$k$,白云从$1$号点跳若干步到达$k$号点的方案数是多少?

输入格式

第一行一个正整数$n$。 接下来$n-1$行,每行两个数$a,b$表示一条树边。 接下来一行$n$个整数,表示每个点的权值。

输出格式

输出$n$行,一次表示每个点的答案,对$10^9+7$取模。

说明/提示

对于$30\%$的数据满足$n \le 5000$。 对于另$10\%$的数据满足,每个点权值的不同质因子不超过一个。 对于另$20\%$的数据满足,$val[1] \le 10^9$。 对于另$20\%$的数据满足,树是一条链。 对于$100\%$的数据满足,$n \le 10^5,val[1] \le 10^{18}$。 保证每个点的权值都是$val[1]$的约数。