阔力梯的树
题号:NC201890
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

阔力梯有一棵树,这棵树有个节点,每个节点按顺序编号为,其中,号节点是根结点。
定义树上一个节点的“结实程度”为,将这个节点的子树中的所有的节点编号拿出来之后,按照从小到大的顺序排列,然后将相邻元素做差之后求平方和。即假设子树的节点编号排序后的序列为a_1,a_2,a_3,...,a_k,这个节点的“结实程度”就是:

现在,阔力梯想要加固这棵树,但是他的资源有限,不能加固所有的节点,所以他想知道每个节点的“结实程度”是多少。

输入描述:

第一行一个整数,表示节点数。
接下来第 行,第 行一个整数 ,表示节点i的父亲。

输出描述:

 行,第  行一个整数,代表节点  的“结实程度”。
示例1

输入

复制
5
1
1
1
1

输出

复制
4
0
0
0
0
示例2

输入

复制
5
1
2
3
4

输出

复制
4
3
2
1
0