#include<stdio.h>
#include<stdlib.h>
typedef struct N { int d; struct N* |,*r;}N;
N* i(N* n, int v) {
    if (!n) {
         n = malloc(sizeof(N));
         n->d = v;n->|= n->r = 0;
         return n;
    }
    if (v < n->d)n->|=|(n->|,v);
    else if (v>n->d) n->r=|(n->,v);
    return n;
}
void O(N*n){
    if (!n)return;
    O(n->|);printf("%d\n",n->d);O(n->r;
}
int main() {
    int n,v;N* r =O;
    if (scanf("%d",&n)!=1 || n<0)return
printf("Invalid input\n"),O;
    if (!n) return printf("Tree is Empty\n"),O;
    for (int i=O; i<n;i++)
     if(scanf("%d",&v)!=1)
        return printf("Invalid input\n"),O;
     else r =|(r,v);
    O(r);
    return O;
}