#include <bits/stdc++.h>
using namespace std;
int par[1000005], maxi[1000005][2], agerbar[1000005];
void go(int now) {
  if (!par[now]) return;
  int ans = maxi[now][0];
  if (maxi[now][0] == maxi[now][1]) ans++;
  if (ans <= agerbar[now]) return;
  agerbar[now] = ans;
  if (ans > maxi[par[now]][0])
    maxi[par[now]][0] = ans;
  else if (ans > maxi[par[now]][1])
    maxi[par[now]][1] = ans;
  go(par[now]);
}
int main() {
  int n, i, cnt = 2;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    int p, now = cnt++;
    scanf("%d", &p);
    par[now] = p;
    go(now);
    printf("%d ", maxi[1][0]);
  }
  printf("\n");
  return 0;
}
