#include<bits/stdc++.h>
using namespace std;
int N;
vector<int> G[5001];
int A[5001],B[5001];

void dfs(int pos){
  A[pos]=B[pos]=0;
  int maxm=-1e9, sum=0;
  for(int i=0;i<(int)G[pos].size();i++){
    int to=G[pos][i];
    dfs(to);
    B[pos]+=A[to];
    sum+=A[to];
    maxm=max(maxm,-A[to]+B[to]);
  }
  A[pos]=max(sum,sum+maxm+1);
}

int solve(){
  dfs(0);
  return A[0];
}

int main(){
  cin>>N;
  for(int i=1;i<=N;i++){
    int id;
    cin>>id;
    G[id].push_back(i);
    printf("%d\n",solve());
  }
  return 0;
}