#include<stdio.h>

#define MAX 10000
#define NIL -1

struct Node {
  int a,l,r;
};

struct Node T[MAX];

int n;
int D[MAX],H[MAX];

int main() {
  int i,v,l,r;

  scanf("%d",&n);
  for(i = 0 ; i < n ; i++) {
    T[i].a = NIL;
  }

  for(i = 0 ; i < n ; i++) {
    scanf("%d%d%d",&v,&l,&r);
    T[v].l = l;
    T[v].r = r;
    if ( l != NIL )
      T[l].a = v;
    if ( r != NIL )
      T[r].a = v;
  }

  for (i = 0 ; i < n ; i++){
    D[i] = getDepth(i);
    H[i] = 0;
  }

  for (i = 0 ; i < n ; i++){
    if (T[i].l == NIL && T[i].r == NIL) {
      H[i] = 0;
      int p = T[i].a;
      int c = 1;
      while(1){
        if (p == NIL)
          break;
        if (H[p] < c)
          H[p] = c;
        c++;
        p = T[p].a;
      }
    }
  }
  for (i = 0 ; i < n ; i++)
    print(i);
  return 0;
}


