#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
    int data;
    struct Node*left,*right;
}Node;
Node*newnode(int value)
    Node*insert(Node*root,int value);
    void levelOrder(Node*root);
    Node*newNode(int value){
        Node*temp=(Node*)malloc(sizeof(Node));
    temp->data=value;
    temp->left=temp->right=NULL;
    return temp;
}
Node*insert(Node*root,int value){
    if(root==NULL)
      return newNode(value);
      if(value<root->data)
        root->left=insert(root->left,value);
       else
        root->right=insert(root->right,value);
    return root;
}
void level order(Node*root){
    if(root==NULL)
    return;
    Node*queue[100];
    int front=0,rear=0;
    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");
        return 0;
        
    }
    Node*root=NULL;
    for(int i=0;i<n;i++){
        int value;
        scanf("%d",&value);
        root=insert(root,value);
    }
    levelOrder(root);
    return 0;
}