#include using namespace std; #define rep(i,n) for (int i = 0; i< (n); ++i) #define repi(i, a, b) for (int i = (a); i < (b); ++i) #define all(x) (x).begin(), (x).end() #define fore(i, a) for(auto &i:a) using ll = long long; #include using namespace atcoder; struct S{ ll value; }; S op(S a, S b){ return S{a.value+b.value}; } S e(){ return S{0}; } int main() { ll n; cin >> n; segtree seg(2*n); vector> ch(n); ll a; rep(i, n-1){ cin >> a; ch[a].push_back(i+1); } vector pre(n), post(n); ll cnt = 0; function dfs = [&](ll x){ pre[x] = cnt; cnt++; fore(i, ch[x]){ dfs(i); } post[x] = cnt; cnt++; }; dfs(0); ll ans = 0; for(ll i=n-1;i>=0;i--){ ans += seg.prod(pre[i], post[i]+1).value; seg.set(pre[i], {1}); } cout << ans << endl; }