#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
    int data;
    struct Node*left;
    struct Node*right;
}Node;
Node*NewNode(int data){
    Node*node = (Node*)malloc(sizeof(Node));
    node->data = data;
    node->left=node->right=NULL;
    return node;
}
Node*insert(Node*root, int data){
    if (!root)return NewNode(data);
    if(data < root -> data)
    root->right = insert(root->left,data);
    else if (data > root -> data)
    root->right = insert(root->right,data);
    return root;
}
void levelOrder (Node*root){
    if(!root) return;
    Node*queue[100];
    int front = 0,rear;
    queue[rear++]=root;
    while(front < rear){
        Node* current = queue[front++];
        printf("%d",current->data);
        if(current->left)queue[rear++]=current->left;
        if(current->right) queue[rear++]=current->right;
    }
    
}
int main(){
    int n;
    scanf("%d", &n);
    if (n<=0){
        printf("Invalid input\n");
        return 0;
    }
    int values[n];
    int invalid=0
    for(int i = 0; i<n; i++){
        scanf("%d", &values[i]);
        if (values[i]<=0)invalid=1;
    }
    if (invalid){
        print("Invalid input\n");
        return 0;
    }
    Node*root = NULL;
    for(int i = 0; i<n; i++)
    root=insert(root,values[i]);
    levelOrder(root);
    return 0;
    
}