#include<stdio.h>
#define N 100005
int rec(int,int);
void print(int);
struct Node{
  int p;
  int l;
  int r;
};
struct Node T[N];
int n,D[N];
int main(){
  int i,k,m,j,o,l,r;
  scanf("%d",&n);
  for(i=0;i<n;i++) 
    T[i].p=T[i].l=T[i].r= -1;
  for(i=0;i<n;i++){
    scanf("%d%d",&k,&m);
    for(j=0;j<m;j++){
      scanf("%d",&o);
      if(j==0)T[k].l=o;
      else T[l].r=o;
      l=o;
      T[o].p=k;
    }
  }
  for(i=0;i<n;i++){
    if(T[i].p==-1)r=i;
  }
  rec(r,0);
  for(i=0;i<n;i++)
    print(i);
  return 0;
}

int rec(int a,int b){
  D[a]=b;
  if(T[a].r!=-1)rec(T[a].r,b);
  if(T[a].l!=-1)rec(T[a].l,b+1);
}

void print(int a){
  int i,c;
  printf(" node %d;",a);
  printf(" parent = %d,",T[a].p);
  printf(" depth = %d,",D[a]);
  if(T[a].p==-1){
    printf(" root, ");
  }
  else if(T[a].l==-1){
    printf(" leaf, ");
  }
  else printf(" internal node, ");
  printf("[");
  for(i=0,c=T[a].l;c!=-1;i++,c=T[c].r){
    if(i)printf(", ");
    printf("%d",c);
      }
  printf("]");
  printf("\n");
}
  
 