#include<stdio.h>

int Parent(int);
int Right(int);
int Left(int);

int main(){
  int h,i,X[100001];

  scanf("%d",&h);

  for(i=0;i<h;i++){
    scanf("%d",&X[i+1]);
    
      }
  
  for(i=0;i<h;i++){
    printf("node %d: key = %d, ",i+1,X[i+1]);

    if(Parent(i+1)>=1)printf("parent key = %d, ",X[Parent(i+1)]);
    if(Left(i+1) <= h)printf("left key = %d, ",X[Left(i+1)]);
    if(Right(i+1) <= h)printf("right key = %d, ",X[Right(i+1)]);
    printf("\n");
  }
  return 0;
}

int Parent(int x){
  return x/2;
}

int Right(int y){
  return 2 * y + 1;
}

int Left(int z){
  return 2 * z ;
}
  
    

