Example

Input

4
1 1 2


Output

6
#include<bits/stdc++.h>
#define MAX_LOG_V 20
#define MAX_V 100005
using namespace std;
typedef long long ll;
vector<int> G[MAX_V],G2[MAX_V];
int root;
int parent[MAX_LOG_V][MAX_V];
int depth[MAX_V];

void dfs(int v,int p,int d){
  parent[0][v]=p;
  depth[v]=d;
  for(int i=0;i<G[v].size();i++)
    if(G[v][i]!=p)dfs(G[v][i],v,d+1);
}

void init(int V){
  dfs(root,-1,0);
  for(int k=0;k+1<MAX_LOG_V;k++)
    for(int v=0;v<V;v++)
      if(parent[k][v]<0)parent[k+1][v]=-1;
      else parent[k+1][v]=parent[k][parent[k][v]];
}

int lca(int u,int v){
  if(depth[u]>depth[v])swap(u,v);
  for(int k=0;k<MAX_LOG_V;k++){
    if((depth[v]-depth[u])>>k&1)v=parent[k][v];
  }
  if(u==v)return u;
  for(int k=MAX_LOG_V-1;k>=0;k--){
    if(parent[k][u]!=parent[k][v]){
      u=parent[k][u];
      v=parent[k][v];
    }
  }
  return parent[0][u];
}

queue<int> q;

int main(){
  int n,p;
  cin>>n;
  for(int i=1;i<n;i++){
    cin>>p; p--;
    G[i].push_back(p);
    G[p].push_back(i);
    G2[p].push_back(i);
  }
  init(n);
  for(int i=0;i<n;i++)
    sort(G2[i].begin(),G2[i].end());
  for(int i=0;i<G2[0].size();i++)
    q.push(G2[0][i]);
  int pv=0;
  ll ans=0;
  while(!q.empty()){
    int v=q.front(); q.pop();
    int r=lca(pv,v);
    ans+=depth[v]+depth[pv]-depth[r]*2;
    for(int i=0;i<G2[v].size();i++)
      q.push(G2[v][i]);
    pv=v;
  }
  cout<<ans<<endl;
  return 0;
}