#include <stdio.h>
#include <stdlib.h>


void leafnodes(const int *nodes, int numnodes){
    int first = 0;
    
    for(int i=0;i<numnodes;i++){
        if(nodes[i]==-1)continue;
        
        int left = 2 * i + 1;
        int right = 2 * i +2;
        
        if((left >= numnodes || nodes[left]==-1) &&
          (right >= numnodes || nodes[right] ==-1));
        
        if (first){
            print(" ");
        }
        printf("%d", nodes[i]);
        first=1;
    }
}
/*void leafnodes(int *tree, int n){
    for(int i = 0; i<n; i++){
        if(tree[i]==-1)continue;
        
        int left = 2 * i + 1;
        int right = 2 * i +2;
        
        int isleftnull = (left >= n || tree[left] ==-1);
        int isrightnull = (right >= n || tree[right] ==-1);
        
        if(isleftnull && isrightnull){
            printf("%d ", tree[i]);
        }
    }
    printf("\n");
}*/

int main(){
    int n; scanf("%d", &n);
    
    if(n<=0){
        printf("Invalid input\n");
        return 0;
    }
    
    int *nodes=(int *)malloc(n * sizeof(int));
    for(int i=0; i<n;i++){
        scanf("%d", &nodes[i]);
    }
    
    leafnodes(nodes, n);
    free(tree);
    return 0;
}