#18097. 茶树

茶树

题目描述

最近,TeaTree 学习了新的知识——最大公约数(Greatest Common Divisor,简称 gcd),现在她想考考你。

如我们所知,TeaTree 是一棵树,它的根节点是节点 1,这棵树有 nn 个节点和 n−1n - 1 条边。对于每个节点 ii,它都有一个值 viv_i。

对于每两个节点 ii 和 jj(i≠ji \neq j),它们会向它们的最近公共祖先(Lowest Common Ancestors,简称 LCA)告知一个数字:gcd(vi,vj)gcd(v_i, v_j)。

输入格式

第一行是一个正整数 nn,表示节点的数量。

接下来一行有 n−1n - 1 个正整数 f2,f3,…,fnf_2, f_3, …, f_n,fif_i 表示节点 ii 在树中的父节点。

再接下来一行有 n 个正整数 v1,v2,…,vnv_1, v_2, …, v_n,viv_i 表示节点 i 的值。

n≤100000,fi<i,vi≤100000n \le 100000,f_i < i,v_i \le 100000

输出格式

你的输出应该包含 n 行,对于第 i 行,输出节点 i 所听到的最大数字。

对于没有听到任何数字的节点,输出 -1。

4
1 1 3
4 1 6 9
2
-1
3
-1