#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

  • 11 行目には、風船の個数を表す整数 N(2N105)N (2 ≦ N ≦ 10^5) が与えられる。
  • 22 行目には、NN 個の整数が空白区切りで与えられる。このうち i(1iN)i (1 ≦ i ≦ N) 番目の整数 Li(1Li104)L_i (1 ≦ L_i ≦ 10^4) は、風船 ii のヒモの長さを表す。
  • 33 行目には、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 にくくりつけたことを表す。
  • 44 行目には、天井の高さとして考えられる値の個数を表す整数 Q(1Q105)Q (1 ≦ Q ≦ 10^5) が与えられる。
  • 55 行目からの QQ 行のうち i(1iQ)i (1 ≦ i ≦ Q) 行目には、天井の高さを表す整数 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