using System;

namespace B
{
    class Check
    {
        public int dep(Node[] node, int id)
        {
            if (node[id].p == -1)
            {
                return 0;
            }
            return dep(node, node[id].p) + 1;
        }

        public int height(Node[] node, int id)
        {
            if (id==-1)
            {
                return -1;
            }
            return Math.Max(height(node, node[id].left), height(node, node[id].right)) + 1;
        }
    }

    class Node
    {
        public int id;
        public int p;
        public int s;
        public int deg;
        public int dep;
        public int h;
        public string type;
        public int left;
        public int right;

        public void node()
        {
            id = 0;
            p = -1;
            s = -1;
            deg = 0;
            dep =0;
            h = 0;
            type = "none";
            left = 0;
            right = 0;
        }
    }

    class B
    {
        static void Main(string[] args)
        {
            string input1 = Console.ReadLine();
            int n = int.Parse(input1), i, nowid;
            Node[] node = new Node[n];
            string[] input2 = new string[100000];
            Check check = new Check();
            for (i = 0; i < n; i++)
            {
                node[i] = new Node();
                node[i].id = i;
                node[i].p = -1;
                node[i].s = -1;
            }
            for (i = 0; i < n; i++)
            {
                input2 = Console.ReadLine().Split(' ');
                nowid = int.Parse(input2[0]);
                node[nowid].left = int.Parse(input2[1]);
                node[nowid].right = int.Parse(input2[2]);
                if(node[nowid].left==-1 && node[nowid].right == -1)
                {
                    node[nowid].type = "leaf";
                }
                if (node[nowid].left != -1)
                {
                    node[nowid].deg++;
                }
                if (node[nowid].right != -1)
                {
                    node[nowid].deg++;
                }
            }

            for (i = 0; i < n; i++)
            {
                if (node[i].left!=-1) {
                    node[node[i].left].p = node[i].id;
                }
                if (node[i].right!=-1)
                {
                    node[node[i].right].p = node[i].id;
                }
            }

            for (i = 0; i < n; i++)
            {
                node[i].dep = check.dep(node, i);
                node[i].h = check.height(node, i);
                if (node[i].left != -1 && node[i].right != -1)
                {
                    node[node[i].left].s = node[i].right;
                    node[node[i].right].s = node[i].left;
                }
            }

            //出力
            for (i = 0; i < n; i++)
            {
                if (node[i].dep == 0)
                {
                    node[i].type = "root";
                }
                else if (node[i].type != "leaf")
                {
                    node[i].type = "internal node";
                }
                Console.WriteLine("node " + node[i].id + ": parent = " + node[i].p + ", sibling = " +node[i].s+", degree = "+ node[i].deg + ", depth = " + node[i].dep + ", height = " + node[i].h + ", " + node[i].type);
            }

        }
    }
}



Measured memory_bytes: 10056