#include<stdio.h>
#define MAX 100001
 
int parent(int);
int left(int);
int right(int);
 
int main(){

  int A[MAX];
  int h, i; 
 
  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]);

    if(parent(i) >= 1){

      printf("parent key = %d, ", A[parent(i)]);

    }

    if(left(i) <= h){

      printf("left key = %d, ",A[left(i)]);
 
    }

    if(right(i) <= h){

      printf("right key = %d, ", A[right(i)]);

    }

    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);

}