#include using namespace std; const int M = 1000000007; vector> edge; set se; long long dfs(int p, int par) { long long ret = distance(se.begin(), se.lower_bound(p)); se.insert(p); for (auto& i : edge[p]) { if (i == par) continue; ret += dfs(i, p); } se.erase(p); return ret; } int main() { int n; cin >> n; edge = vector>(n); for (int i = 1; i < n; ++i) { int a; cin >> a; edge[i].push_back(a); edge[a].push_back(i); } cout << dfs(0, -1) << "\n"; return 0; }