#include <stdio.h>
#include <stdlib.h>
#define N 100005
#define NTL -1

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

struct Node T[N];
int n,U[N];

void print(int w){
  int i,t;

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

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

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

void re(int w,int p){
  U[w]=p;
  if(T[w].r!=NTL)
    re(T[w].r,p);

  if(T[w].q!=NTL)
    re(T[w].q,p+1);
}

int main(){

  int i,j,v,d,t,q,r,n;

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

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

  re(r,0);
  for(i=0;i<n;i++){
    print(i);
  }
  return 0;
}

