#include <bits/stdc++.h>
using namespace std;
int n, anc[20][234567], d[234567];
int lca(int a, int b) {
  if (d[a] > d[b]) swap(a, b);
  int dif = d[b] - d[a];
  for (int i = (0); i < (20); i++)
    if (dif & (1 << i)) b = anc[i][b];
  for (int i = 19; i >= 0; i--)
    if (anc[i][a] != anc[i][b]) {
      a = anc[i][a];
      b = anc[i][b];
    }
  if (a == b) return a;
  return anc[0][a];
}
int dist(int a, int b) {
  int l = lca(a, b);
  return d[a] + d[b] - 2 * d[l];
}
int main() {
  scanf("%d", &n);
  for (int i = (2); i < (n + 1); i++) scanf("%d", anc[0] + i);
  for (int i = (1); i < (20); i++)
    for (int j = (1); j < (n + 1); j++) anc[i][j] = anc[i - 1][anc[i - 1][j]];
  for (int i = (2); i < (n + 1); i++) d[i] = d[anc[0][i]] + 1;
  int a = 1, b = 1, cur = 0;
  for (int i = (2); i < (n + 1); i++) {
    int ta = dist(a, i), tb = dist(b, i);
    if (ta > cur) {
      b = i;
      cur = ta;
    } else if (tb > cur) {
      a = i;
      cur = tb;
    }
    printf("%d%c", cur, i == n ? '\n' : ' ');
  }
  return 0;
}
