#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);
}