#include <stdio.h>
#include <stdlib.h>
#define MAX 100005
#define NIL -1

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

int n,D[MAX];
struct Node T[MAX];

int rec(int);
void print(int);

int main(){
  int i,id=0,k=0,j,c=0,t=0,r=0;
  scanf("%d",&n);

  for(i=0;i<n;i++) T[i].p=T[i].l,T[i].r=NIL;

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

}

int rec(int u){
  int d;
  for(d=0;T[u].p!=NIL;d++){
    u=T[u].p;
  }
  return d;
}

void print(int u){
  int i,c;
  printf("node %d: parent = %d, depth = %d, ",u,T[u].p,rec(u));
  if(T[u].p==NIL) printf("root, [");
  else if(T[u].l==NIL) printf("reaf, [");
  else printf("internal code, [");
  if(T[u].l!=NIL){
    while(1){
      if(T[T[u].l].r==NIL){
        printf("%d",T[u].l);
        break;
      }
      else{
        printf("%d, ",T[u].l);
        T[u].l=T[T[u].l].r;
      }
    }
  }
  printf("]\n");
}