#include <stdlib.h>#include <stdio.h>
typedef struct tree{ int num; int count; struct tree *left,*right;}NODE;
int nodenum(NODE *root){ if(root == NULL) return 0; else return 1+nodenum(root->left)+nodenum(root->right);}
void visit(NODE *root,int max){ if(root != NULL) { visit(root->left,max); printf("%d",root->num); if(root->num == max) printf("/n"); else printf(" "); visit(root->right,max); }}
int main(){
NODE *p,*q,*r,*pre; int n,num,i; NODE *root = NULL; int max;
scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&num);
if(root == NULL) { root = (NODE *)malloc(sizeof(NODE)); root->num = num; root->count = 1; root->left=root->right=NULL; } else { pre = root; p = root; while(p != NULL) { if(num > p->num) { pre = p; p = p->right; } else if(num == p->num) { break; } else { pre = p; p = p->left; } }
if(p != NULL) { p->count++; } else { q = (NODE *)malloc(sizeof(NODE)); q->num = num; q->count = 1; q->left=q->right = NULL;
if(num > pre->num) pre->right = q; else pre->left = q; } } }
printf("%d/n",nodenum(root));
r = root; while(r) { pre = r; r = r->right; }
max = pre->num; visit(root,max);
return 0;}
