#include<stdio.h>

#define MAX 100000

int parent(int);
int left(int);
int right(int);

int main() {
  int i,H,A[MAX];

  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) >= 0 ) 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;
  }