#include<bits/stdc++.h>
#define N 510000
using namespace std;
vector<int>v[N];
int n;
int dfs(int x,int lim){
if(!v[x].size()){
return x>lim;
}
int num0=0,num1=0;
for(auto to:v[x]){
int tmp = dfs(to,lim);
if(tmp==0)num0++;
if(tmp==1)num1++;
}
if(num0<num1)return 1;
if(num1<num0)return 0;
return -1;
}
bool check(int lim){
return dfs(1,lim)<=0;
}
int main(){
std::ios::sync_with_stdio(0);
cin>>n;
for(int i=2;i<=n;i++){
int p;
cin>>p;
v[p].push_back(i);
}
int l=1,r=n,ans;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid))ans=mid,r=mid-1;
else l=mid+1;
}
cout<<ans<<'\n';
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBOIDUxMDAwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3I8aW50PnZbTl07CmludCBuOwppbnQgZGZzKGludCB4LGludCBsaW0pewogICAgaWYoIXZbeF0uc2l6ZSgpKXsKICAgICAgICByZXR1cm4geD5saW07CiAgICB9CiAgICBpbnQgbnVtMD0wLG51bTE9MDsKICAgIGZvcihhdXRvIHRvOnZbeF0pewogICAgICAgIGludCB0bXAgPSBkZnModG8sbGltKTsKICAgICAgICBpZih0bXA9PTApbnVtMCsrOwogICAgICAgIGlmKHRtcD09MSludW0xKys7CiAgICB9CiAgICBpZihudW0wPG51bTEpcmV0dXJuIDE7CiAgICBpZihudW0xPG51bTApcmV0dXJuIDA7CiAgICByZXR1cm4gLTE7Cn0KYm9vbCBjaGVjayhpbnQgbGltKXsKICAgIHJldHVybiBkZnMoMSxsaW0pPD0wOwp9CmludCBtYWluKCl7CiAgICBzdGQ6Omlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luPj5uOwogICAgZm9yKGludCBpPTI7aTw9bjtpKyspewogICAgICAgIGludCBwOwogICAgICAgIGNpbj4+cDsKICAgICAgICB2W3BdLnB1c2hfYmFjayhpKTsKICAgIH0KICAgIGludCBsPTEscj1uLGFuczsKICAgIHdoaWxlKGw8PXIpewogICAgICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICAgICAgaWYoY2hlY2sobWlkKSlhbnM9bWlkLHI9bWlkLTE7CiAgICAgICAgZWxzZSBsPW1pZCsxOwogICAgfQogICAgY291dDw8YW5zPDwnXG4nOwogICAgcmV0dXJuIDA7Cn0=