#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
typedef struct Node {
    int key;
    struct Node *l, *r;
} Node;
Node* insert(Node*t, int k){
    if(!t){
        Node*n = malloc(sizeof(Node));
        n->key = k; n->l = n->r = NULL;
        return n ;
        }
    if(k<t->key) t->l = insert(t->l, k);
    else if (k>t->key) t->r = insert(t->r, k);
    return t;
}
void inorder(Node* t){
    if (!t) return;
    inorder(t->l);
    printf("%d\n",t->key);
    inorder(t->r);
}
int valid(char*s){
    if(!*s) return 0;
    if(*s=='-'||*s=='+') s++;
    while(*s) if(!isdigit(*s++)) return 0;
    return 1;
}
int main(){
    char s[20];
    if(!fgets(s,20,stdin || !valid(s))
    {
        printf("Invalid input\n");
        return 0;
        }
    int n = atoi(s);
    if(n==0){ printf("Tree is Empty\n"); return 0; }
    if (n<0 || n>0){ printf("Invalid input\n"); return 0;}
    Node*root=NULL; 
    for (int i=0; i<n; i++){
        if(!fgets(s,20,stdin) || !valid(s)) {printf("Invalid input\n"); return 0;}
        int v = atoi(s);
        if(v<-100 || v>100) {printf("Invalid input\n"); return 0; }
        root =insert(root,v);
    }
    inorder(root);
}