#include <bits/stdc++.h>
using namespace std;

int main ()
{
	int n;
	cin >> n;
	vector <vector <int> > adj (n);
	int root = -1;
	for (int j = 0; j < n; j++)
	{
		int p;
		cin >> p;
		if (p == 0)
		{
			root = j;
		}
		else
		{
			p -= 1;
			adj[j].push_back (p);
			adj[p].push_back (j);
		}
	}

	vector <vector <int> > f (n, vector <int> (2, 0));

	function <void (int, int)> recur = [&] (int v, int p)
	{
		f[v][1] = 1;
		f[v][0] = 0;
		for (auto u : adj[v])
		{
			if (u == p) continue;
			recur (u, v);
			f[v][1] += f[u][0];
			f[v][0] += max (f[u][0], f[u][1]);
		}
	};

	recur (root, -1);
	cout << max (f[root][0], f[root][1]) << endl;
	return 0;
}
