#include<bits/stdc++.h>
using namespace std;

struct tree{int p,l,r,s,dg,dp,h;};

tree t[30];


void depth(int n,int d){
  if(n==-1)return;
  t[n].dp=d;
  depth(t[n].l,d+1),depth(t[n].r,d+1);
}

void height(int n,int h){
  if(n==-1)return;
  t[n].h=max(t[n].h,h);
  height(t[n].p,h+1);
}

int main(){
  int n,id,l,r,cnt=0;
  cin>>n;
  for(int i=0;i<n;i++)t[i].h=t[i].s=t[i].p=-1;
  for(int i=0;i<n;i++){
    cin>>id>>l>>r;
    t[id].r=r;
    t[id].l=l;
    cnt=0;
    if(l!=-1)t[l].p=id,cnt++;
    if(r!=-1)t[r].p=id,cnt++;
    if(cnt==2)t[r].s=l,t[l].s=r;
    t[id].dg=cnt;
  }
  for(int i=0;i<n;i++){
    height(i,0);
    if(t[i].p==-1)depth(i,0);
  }
  for(int i=0;i<n;i++){
    printf("node %d: parent = %d, sibling = %d, ",i,t[i].p,t[i].s);
    printf("degree = %d, depth = %d, height = %d, ",t[i].dg,t[i].dp,t[i].h);
    if(t[i].p==-1)printf("root\n");
    else if(t[i].r==-1&&t[i].l==-1)printf("leaf\n");
    else printf("internal node\n");
  }
  return 0;
}