#include using namespace std; template struct Ftree { vector dat; Ftree(int n) : dat(n + 1) {} void add(int x, T v) { for (int i = x + 1; i < dat.size(); i += i & -i) dat[i] += v; } T sum(int x) { T r = 0; for (int i = x + 1; i; i -= i & -i) r += dat[i]; return r; } }; int main() { ios::sync_with_stdio(false); int N; { cin >> N; } vector> G(N); { for (int i = 1; i < N; ++i) { int A; { cin >> A; } G[A].push_back(i); } } int64_t res = 0; { Ftree ftree(N); function dfs = [&](int u, int fa) { res += ftree.sum(u); ftree.add(u, +1); for (int v : G[u]) if (v != fa) dfs(v, u); ftree.add(u, -1); }; dfs(0, -1); } cout << res << endl; }