//二叉树链表表示法
#include<iostream>
#include<cstdlib>
using namespace std;
#define MAX 32768
int n;
struct tree
{
struct tree*left;
int date;
struct tree *right;
};
typedef struct tree treenode;
typedef struct tree *b_tree;
b_tree insert(b_tree root,int node)
{
b_tree newnode;
b_tree currentnode;
b_tree parentnode;
newnode=(b_tree)malloc(sizeof(treenode));
newnode->date=node;
newnode->left=NULL;
newnode->right=NULL;
if(root==NULL)
return newnode;
else
{
currentnode=root;
while(currentnode!=NULL)
{
parentnode=currentnode;
if(currentnode->date>node)
currentnode=currentnode->left;
else currentnode=currentnode->right;
}
if(parentnode->date>node)
parentnode->left=newnode;
else parentnode->right=newnode;
}
return root;
}
b_tree create(int *date,int len){
int i;
b_tree root=NULL;
for(i=1;i<=len;i++)
root=insert(root,date[i]);
return root;
}
void print(b_tree root)
{
if(root!=NULL)
{
cout<<root->date<<'\t';
print(root->left);
print(root->right);
}
}
int main(void)
{
int i;
cin>>n;
int node[n+1];
b_tree root=NULL;
for(i=1;i<=n;i++)
cin>>node[i];
root=create(node,n);
print(root);
return 0;
}