#include <stdio.h>
int parent(int i)
{
  return i/2;
}
int left(int i)
{
  return 2*i;
}
int right(int i)
{
  return 2*i+1;
}


main()
{
  int T[250];
  int size,i;

  scanf("%d",&size);
  for(i=1;i<=size;i++)
    {
      scanf("%d",&T[i]);
    }

  for(i=1;i<=size;i++)
    {
      printf("node %d: key = %d, ",i,T[i]);
      if(parent(i)!=0)
	{
	  printf("parent key = %d, ",T[parent(i)]);
	}
      if(left(i)<=size)
	{
	  printf("left key = %d, ",T[left(i)]);
	}
      if(right(i)<=size)
	{
	  printf("right key = %d, ",T[right(i)]);
	}
      printf("\n");
    }
  return 0;
}