Example

Input

4
1 1 2


Output

6
#include<bits/stdc++.h>
using namespace std;

#define int long long
typedef vector<int>vint;
typedef pair<int,int>pint;
typedef vector<pint>vpint;
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)
#define all(v) (v).begin(),(v).end()
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define fi first
#define se second
template<typename A,typename B>inline void chmin(A &a,B b){if(a>b)a=b;}
template<typename A,typename B>inline void chmax(A &a,B b){if(a<b)a=b;}

int N;
vint G[111111];
int par[20][111111],dep[111111];
void dfs(int v,int p,int d){
    par[0][v]=p;
    dep[v]=d;
    for(auto u:G[v]){
        dfs(u,v,d+1);
    }
}
int lca(int u,int v){
    if(dep[u]<dep[v])swap(u,v);
    rep(i,20)if((dep[u]-dep[v])>>i&1)u=par[i][u];
    if(u==v)return u;
    for(int i=19;i>=0;i--)if(par[i][u]!=par[i][v])u=par[i][u],v=par[i][v];
    return par[0][u];
}

signed main(){
    cin>>N;
    for(int i=1;i<N;i++){
        int j;cin>>j;j--;
        G[j].pb(i);
    }
    rep(i,N)sort(all(G[i]));
    vint vec={0};
    rep(i,N){
        for(auto u:G[vec[i]])vec.pb(u);
    }
    dfs(0,-1,0);
    rep(i,19)rep(j,N){
        if(par[i][j]==-1)par[i+1][j]=-1;
        else par[i+1][j]=par[i][par[i][j]];
    }

    int ans=0;
    for(int i=0;i<N-1;i++){
        int p=lca(vec[i],vec[i+1]);
        ans+=dep[vec[i]]+dep[vec[i+1]]-2*dep[p];
    }
    cout<<ans<<endl;
    return 0;
}