买一送一
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
Special Judge, 64bit IO Format: %lld

题目描述

ICPCCamp 有 n 个商店,用 编号。对于任意 i > 1,有从商店 p_i 到 i 的单向道路。
同时,商店 i 出售类型为 a_i 的商品。
Bobo 从商店 1 出发前往商店 i。他要在两个不同的商店购买商品(包括商店 1 和 i)。设他先购买的商品类型是 x,后购买的商品类型是 y,他用 f_i 表示不同的有序对 的数量。
求出 的值。

输入描述:

输入文件包含多组数据,请处理到文件结束。
每组数据的第一行包含 1 个整数 n.
第二行包含 (n - 1) 个整数 .
第三行包含 n 个整数 .

输出描述:

对于每组数据输出 (n-1) 个整数表示 
示例1

输入

复制
3
1 2
1 2 3
3
1 1
1 2 3
4
1 2 3
1 3 2 3

输出

复制
1
3
1
1
1
3
5

说明

对于第三个样例,当 i = 4 时,可能的有序对 \langle x, y \rangle\langle 1, 2 \rangle, \langle 1, 3\rangle, \langle 2, 3 \rangle, \langle 3, 2\rangle, \langle 3, 3\rangle 共 5 种。所以 f_4 = 5.

备注:

* 
*
*
* n 的总和不超过 .