#codefestival2015finali. [codefestival_2015_final_i]風船ツリー

[codefestival_2015_final_i]風船ツリー

问题描述

小明正在玩链接在一起的 NN 个气球。气球 i(1iN)i (1 ≦ i ≦ N) 的绳子长度为 LiL_i。小明将气球 11 的绳子抓在手里,然后将气球 i(2iN)i (2 ≦ i ≦ N) 的绳子系在气球 PiP_i 上。我们称这样连接在一起的气球为“气球树”。

气球树的高度定义为气球树中包含的最高气球的高度。其中,气球 11 的高度为 L1L_1,气球 i(2iN)i (2 ≦ i ≦ N) 的高度为气球 PiP_i 的高度加上 LiL_i

小明想要通过解开一些绳子,使得气球树的高度正好等于天花板的高度。他还想知道为了实现这一目标,至少需要解开多少根绳子。当解开气球 i(2iN)i (2 ≦ i ≦ N) 的绳子时,气球 ii 以及与其相连的所有气球都会飞走,从气球树中移除。

给定可能的天花板高度的数量 QQ,请计算每个天花板高度对应的实现目标所需解开的最小绳子数。


输入

输入以以下格式从标准输入中给出。

NN L1L_1 L2L_2 ... LNL_N P2P_2 P3P_3 ... PNP_N QQ H1H_1 H2H_2 : HQH_Q

  • 第一行包含一个整数 N(2N105)N (2 ≦ N ≦ 10^5),表示气球的数量。
  • 第二行包含 NN 个整数,以空格分隔,其中第 i(1iN)i (1 ≦ i ≦ N) 个整数 Li(1Li104)L_i (1 ≦ L_i ≦ 10^4) 表示气球 ii 的绳子长度。
  • 第三行包含 N1N-1 个整数,以空格分隔,其中第 i(1iN1)i (1 ≦ i ≦ N-1) 个整数 Pi+1(1Pi+1i)P_{i+1} (1 ≦ P_{i+1} ≦ i) 表示小明将气球 i+1i+1 的绳子系在气球 PiP_i 上。
  • 第四行包含一个整数 Q(1Q105)Q (1 ≦ Q ≦ 10^5),表示可能的天花板高度的数量。
  • 接下来的 QQ 行,每行包含一个整数 Hi(1Hi109)H_i (1 ≦ H_i ≦ 10^9),表示天花板的高度。

输出

输出共 QQ 行。其中,第 i(1iQ)i (1≦i≦Q) 行输出实现气球树高度等于 HiH_i 所需解开的最小绳子数。如果无法实现高度等于 HiH_i,则输出 1-1。最后一行也要换行。


示例1


5
1 1 2 2 2
1 2 2 1
2
2
3

输出示例1


3
1

下图分别表示初始的气球树、高度为 22 的气球树、高度为 33 的气球树。红色的叉号表示需要解开的绳子。

figure1


示例2


10
10 5 6 4 2 2 3 1 1 5
1 1 2 2 3 5 7 7 2
5
10
12
15
17
21

输出示例2


2
-1
4
4
0