Example

Input

4
1 1 2


Output

6
#include<bits/stdc++.h>
#define MAXV 100010
#define MAXLV 20
#define f first
#define s second
#define mp make_pair
#define inf 1<<29
using namespace std;

vector<int> e[MAXV];
int n,root=0;

int parent[MAXLV][MAXV];
int depth[MAXV];

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

void init(){
  dfs(root,-1,0);
  for(int k=0;k+1<MAXLV;k++){
    for(int v=0;v<n;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<MAXLV;k++){
    if((depth[v]-depth[u])>>k&1){
      v=parent[k][v];
    }
  }
  if(u==v)return u;
  for(int k=MAXLV-1;k>=0;k--){
    if(parent[k][u]!=parent[k][v]){
      u=parent[k][u];
      v=parent[k][v];
    }
  }
  return parent[0][u];
}

int main()
{
  int a;

  cin>>n;
  for(int i=1;i<n;i++){
    cin>>a;
    e[a-1].push_back(i);
  }
  init();

  vector<int> v;
  int d[MAXV];
  for(int i=0;i<MAXV;i++)d[i]=inf;
  queue<int> q;
  q.push(0);
  d[0]=0;
  while(!q.empty()){
    int u=q.front();
    q.pop();
    v.push_back(u);
    for(int i=0;i<e[u].size();i++){
      int next=e[u][i];
      if(d[next]==inf){
	d[next]=d[u]+1;
	q.push(next);
      }
    }
  }

  long long ans=0;
  for(int i=0;i<v.size()-1;i++){
    int u=lca(v[i],v[i+1]);
    ans+=(d[v[i]]-d[u]);
    ans+=(d[v[i+1]]-d[u]);
  }
  cout<<ans<<endl;

  return 0;
}