#include<stdio.h>

#define MAX 100005
#define NTL -1

struct Node{int p, l, r;};
struct Node T[MAX];

int n,H,D[MAX];

int main() {
  int i,j,d,v,c,l;

  scanf("%d",&n);
  for(i = 0 ; i < n ; i++) {
    T[i].p = T[i].l = T[i].r = NTL;
  }

  for(i = 0 ; i < n ; i++) {
    scanf("%d %d",&v,&d);
    for(j = 0 ; j < d ; j++) {
      scanf("%d",&c);
      if(j == 0)
	T[v].l = c;
      else T[l].r = c;
      l = c;
      T[c].p = v;
    }
  }

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

  for(i = 0 ; i < n ; i++)
    print(i);
  return 0;
}

int getDepth(int x) {
  int d=0;

  for(; T[x].p != NTL ; d++)
    x = T[x].p;
  return d;
}

int print(int x) {
  int i,c;

  printf("node %d: ",x);
  printf("parent = %d, ",T[x].p);
  printf("depth = %d, ",D[x]);

  if(T[x].p == NTL)
    printf("root, ");
  else if(T[x].l == NTL)
    printf("leaf, ");
  else printf("internal node, ");

  printf("[");
  for(i = 0, c = T[x].l ; c != NTL ; i++, c = T[c].r) {
    if (i) printf(", ");
    printf("%d", x);
  }
  printf("]\n");
}

