#PN1003. 树上统计

树上统计

Description

小 D 有一棵 nn 个结点的有根树,编号为 1,2,...,n1,2,...,n 。编号为 1 的结点是根。

小 D 在每个结点上写了一个数字,编号为 i 的结点上写的数字是 aia_i

现在小 D 想知道,有多少对二元组 (x,y)(x,y),满足编号为 xx 的结点是编号为 yy 的结点的祖先,且 ax×aya_x × a_y是完全平方数?

注意一个点不是它自己的祖先。

Format

Input

第一行一个正整数 nn,表示树的点数。

第二行 nn 个正整数,表示 a1,a2,....,ana1 ,a2,....,an

接下来 n1n-1 行,每行两个正整数 x,yx,y,表示编号为 xxyy 的点之间有一条边。

保证给出的边组成一棵树。

Output

输出一行,包含一个整数,表示符合条件的二元组个数。

Samples

4
2 3 8 12
1 2
2 3
3 4
2
5
1 4 9 16 25
1 2
2 3
3 4
4 5
10

Limitation

对于 20% 的数据,保证 1<= n <=2000。

对于另外 10% 的数据,保证每个 aia_i 都是完全平方数。

对于另外 10% 的数据,保证对于每个满足 2<= i <=n 的 i,i-1 和 i 之间有一条边。

对于另外 20% 的数据,保证树是随机生成的。生成方式为:对每个满足 2<= i<=n 的 i,等概率随机选择一个满足 1<= j < i 的 j,在 i 和 j 之间连一条边。

对于所有数据,保证 1 <= n <= 105,1<= aia_i<= 106。