#include using namespace std; void dfs(vector> &dp, vector> &c, int v){ for (int w : c[v]){ dfs(dp, c, w); dp[v].first += dp[w].first + 1; dp[v].second += (dp[w].first + 1) * (dp[w].first + 1); } return; } int main(){ int N; cin >> N; vector p(N); for (int i = 1; i < N; i++){ cin >> p[i]; p[i]--; } vector> c(N); for (int i = 1; i < N; i++){ c[p[i]].push_back(i); } vector> dp(N); dfs(dp, c, 0); vector ans(N); for (int i = 0; i < N; i++){ ans[i] = dp[i].first * dp[i].first - dp[i].second + dp[i].first * 2 + 1; } for (int i = 0; i < N; i++){ cout << ans[i] << endl; } }