#include #include using namespace std; class BIT { const int size; vector v; public: BIT(int n) : size(n), v(n + 1) {} void add(int pos, int val) { ++pos; while (pos <= size) { v[pos] += val; pos += pos & (-pos); } } int query(int right) { int sum = 0; int pos = right; while (pos > 0) { sum += v[pos]; pos -= pos & (-pos); } return sum; } }; int n; vector G[200000]; BIT* bit; long DFS(int from) { long sum = 0; sum += bit->query(from); bit->add(from, 1); for (int to : G[from]) { sum += DFS(to); } bit->add(from, -1); return sum; } int main() { cin >> n; bit = new BIT(n); for (int i = 1; i < n; ++i) { int p; cin >> p; G[p].push_back(i); } cout << DFS(0) << endl; }