#include<stdio.h>
#include<stdlib.h>
#define INF 100000000
int n;
struct Node
{
  int k;
  int pk;
  int lk;
  int rk;
};

struct Node A[251];

void insertKey(int i)
{
  int j;
  for(j = 1; j <= n; j++)
    {
      if(i != j)
	{
	  if(i / 2 == j)
	    {
	      A[i].pk = A[j].k;
	    }
	  if(2 * i == j)
	    {
	      A[i].lk = A[j].k;
	    }
	  if((2 * i) + 1 == j)
	    {
	      A[i].rk = A[j].k;
	    }
	}
    }
}

void print(struct Node A[])
{
  int i;
  for(i = 1; i <= n; i++)
    {
      printf("node %d: key = %d, ", i, A[i].k);
      if(A[i].pk != INF)
	{
	  printf("parent key = %d, ", A[i].pk);
	}
      if(A[i].lk != INF)
	{
	  printf("left key = %d, ", A[i].lk);
	}
      if(A[i].rk != INF)
	{
	  printf("right key = %d, ", A[i].rk);
	}
      printf("\n");
    }
}


int main()
{
  int i;
  scanf("%d", &n);
  for(i = 1; i <= n; i++)
    {
      scanf("%d", &A[i].k);
      A[i].pk = INF;
      A[i].lk = INF;
      A[i].rk = INF;
    }
  for(i = 1; i <= n; i++)
    {
      insertKey(i);
    }
  print(A);
  return 0;
}

