#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const int N = 1e4;
typedef struct node{
int data;
struct node* left;
struct node* right;
}Node;
Node *tree;
void preorder(Node *node){
if(node!= NULL){
printf("%d ",node->data);
preorder(node->left);
preorder(node->right);
}
return ;
}
void inorder(Node *node){
if(node != NULL){
inorder(node->left);
printf("%d\n",node->data);
inorder(node->right);
}
return ;
}
void postorder(Node *node){
if(node != NULL){
postorder(node->left);
postorder(node->right);
printf("%d\n",node->data);
}
return ;
}
Node *insert(Node *tree,int value,int k){
Node *temp;
temp=(Node*)malloc(sizeof(Node));
temp->data=value;
temp->left=NULL;
temp->right=NULL;
if(tree==NULL){
tree=temp;
return tree;
}
else{
if(tree->data<value)
tree->right=insert(tree->right,value,k<<1|1);
else
tree->left=insert(tree->left,value,k<<1);
}
}
int main(){
tree=NULL;
int arr[N],n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
tree=insert(tree,arr[i],1);
}
preorder(tree);
return 0;
}