#dwango2016finald. [dwango2016final_d]木

[dwango2016final_d]木

問題文

NN頂点からなる重み付き無向木が与えられます。頂点は11からNNまで番号付けられています。

はじめ、すべての辺の重みは11です。 頂点u,vu,vに対し、dist(u,v)dist(u,v)uuvvを結ぶ最短経路の辺の重みの総和と定めます。

また、頂点u,vu,vに対し、

$f(u,v)=max\\{dist(u2,v2)|dist(u,v2)=dist(u,v)+dist(v,v2) かつ dist(v,u2)=dist(v,u)+dist(u,u2)\\}$

と定めます。すなわち、頂点u,vu,vを互いに遠ざける方向へのみ動かしたときの距離の最大値と定めます。

「木全体のコスト」を

u1,...n,v1,...,n,u<v∑_{u∈ \\{1,...n\\} ,v ∈ \\{1,...,n\\} , u < v} f(u,v)f(u,v)

と定めます。

それぞれの辺に対し、その辺の重みを22としたときに「木全体のコスト」がどれだけ増えるか出力するプログラムを作成してください。


入力

入力は以下の形式で標準入力から与えられる。

NN p1p_1 p2p_2 ... pN1p_{N-1}

  • 11 行目には、木の頂点を表す整数 N(2N252525)N(2 ≦ N ≦ 252525) が与えられる。
  • 22 行目には、木の辺を示す整数がN1N-1個空白区切りで与えられる。i(1iN1)i(1 ≦ i ≦ N-1)番目の整数は、頂点pi(1pii)p_i(1 ≦ p_i ≦ i)と頂点i+1i+1を結ぶ木の辺の辺があることを表す。

部分点

この問題には部分点が設定されている。

  • N300N ≦ 300 を満たすデータセットに正解した場合、部分点として 3030 点が与えられる。
  • N3000N ≦ 3000 を満たすデータセットに正解した場合、部分点として追加で 5050 点が与えられる。合計で8080点となる。
  • 追加の制約のないデータセットに正解した場合、部分点として追加で 160160 点が与えられる。合計で240240点となる。

出力

N1N-1個の整数を空白区切りで11行に出力せよ。

i(1iN1)i(1 ≦ i ≦ N-1)番目の整数は、辺(pi,i+1)(p_i,i+1)の重みを22としたときの「木全体のコスト」の増加を表す。

行末に余計な空白を入れないこと。また、出力の最後には改行を忘れないこと。


入力例1


5
1 1 2 2

出力例1


9 9 7 7

(1,2),(1,3)(1,2), (1,3)の重みを22としたとき、

1u<vN1≦ u<v≦ Nを満たす(u,v)(u,v)の組はN\*(N1)/2=10N\*(N-1)/2=10個あります。

(u,v)(4,5)(u,v)≠(4,5)のときf(u,v)f(u,v)11増加し、(u,v)=(4,5)(u,v)=(4,5)のときf(u,v)f(u,v)は変化しません。そのため、「木全体のコスト」は99増加します。

(2,4)(2,4)の重みを22としたとき、

(u,v)=(2,4),(1,4),(3,4),(4,5),(1,3),(1,2),(2,3)(u,v)=(2,4),(1,4),(3,4),(4,5),(1,3),(1,2),(2,3)のときf(u,v)f(u,v)は1増加し、これら以外のときf(u,v)f(u,v)は変化しません。そのため、「木全体のコスト」は77増加します。

(2,5)(2,5)の重みを22としたとき、

(u,v)=(2,5),(1,5),(3,5),(4,5),(1,3),(1,2),(2,3)(u,v)=(2,5),(1,5),(3,5),(4,5),(1,3),(1,2),(2,3)のときf(u,v)f(u,v)は1増加し、これら以外のときf(u,v)f(u,v)は変化しません。そのため、「木全体のコスト」は77増加します。


入力例2


8
1 1 2 3 1 4 3

出力例2


24 23 24 18 7 24 18

入力例3


5
1 1 1 1

出力例3


7 7 7 7

入力例4


10
1 2 2 2 3 3 4 5 6

出力例4


9 35 25 25 30 9 25 25 30