#include <stdio.h>
#define M 100000
int parent (int );
int left (int );
int right (int );
int main ()
{
  int h,i,a[M+1],t=0;

  scanf("%d",&h);
  for(i=1; i<=h;i++)
    {
      scanf("%d",&a[i]);
    }
  for(i=1;i<=h;i++)
    {
      printf("node %d: key = %d, ",i,a[i]);
      t=parent(i);
      if(t>=1)printf("parent key = %d, ",a[t]);
      t=left(i);
      if(t<=h) printf("left key = %d, ",a[t]);
      t=right(i);
      if(t<=h) printf("right key = %d, ",a[t]);
     printf("\n");
    }

  return 0;
}
int parent (int x){
  return x/2;
}
int left(int x){
  
  return 2*x;
}
int right (int x){
  return 2*x+1;
}
  

