class Node: def __init__(self): #self.parent_Node = None self.child_Node = [] self.flag = False self.fix = False self.all_child = [] def fix_all_child(self): if self.fix: return self.all_child self.all_child = self.child_Node.copy() for node in self.child_Node: self.all_child.extend(node.fix_all_child()) self.fix = True return self.all_child class tree: def __init__(self, Nodes): self.Nodes = Nodes def push_edge(self,low, upper): self.Nodes[upper].child_Node.append(self.Nodes[low]) #self.Nodes[low].parent_Node = self.Nodes[upper] def fix_all_child(self, Node_idx): self.Nodes[Node_idx].fix_all_child() N = int(input()) A = map(int, input().split()) t = tree([Node() for i in range(N)]) for idx, a in enumerate(A): t.push_edge(idx + 1, a) t.fix_all_child(0) num = 0 for i in range(N-1, -1, -1): num+=sum([1 if node.flag else 0 for node in t.Nodes[i].all_child]) t.Nodes[i].flag = True print(num)