#include<stdio.h>
#include<stdlib.h>
typedef struct nNode {
    int data;
    struct Node *left, *right;
}Node;
Node* createNode(int data) {
    Node* newNode=(Node*)malloc(sizeof(Node));
    if(newNode) {
        newNode->data=data;
        newNode->left=newNode->right=NULL;
    }
    return newNode;
}
Node* insert(Node* root,int data) {
    if(root==NULL)
    {
        return createNode(data);
    }
    if(data< root->data) {
        root->left=insert(root->left,data);
    }else if(data< root->data) {
        root->rightinsert(root->right,data);
    }
    return root;
}
void postorder_leaf_print(Node* root) {
    if(root==NULL) return;
    postorder_leaf_print(root->right);
    if(root->left==NULL&&root->right==NULL) {
        printf("%d ",root->data);
    }
}
void freeTree(Node* rooyt) {
    if(root==NULL) return;
    freeTree(root->left);
    freeTree(root->right);
    free(root);
}
int main()
{
    int n,data;
    Node* root=NULL;
    if(scanf("%d",&n)!=1) return 0;
    
    if(n<=0)
    {
        printf("Invalid input\n");
        return 0;
    }
    for(int i=0;i<n;i++)
    {
        if(scanf("%d",&data)!=1){
            break;
        }
        root=insert(root,data);
    }
    postorder_leaf_print(root);
    printf("\n");
    freeTree(root);
    return 0;
}