#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct data{
  int key;
  struct data *right,*left,*parent;
};

struct data *root,*NIL;

struct data * find(struct data *u, int k){
  while(u != NIL && k != u -> key){
    if(k < u -> key){
      u = u -> left;
    }
    else{
      u = u -> right;
    }
  }
  return u;
}

void insert(int k){
  struct data *y = NIL;
  struct data *x = root;
  struct data *z;

  z = (struct data *)malloc(sizeof(struct data));
z -> key = k;
z -> left = NIL;
z -> right = NIL;

while(x != NIL){
  y = x;
  if(z -> key < x -> key){
    x = x -> left;
  }
  else{
    x = x -> right;
  }
}

z -> parent = y;
if(y == NIL){
  root = z;
}
else{
  if(z -> key < y -> key){
    y -> left = z;
  }
  else{
    y -> right = z;
  }
}
}

void inorder(struct data *cin){
  if(cin == NIL){
    return;
  }
  inorder(cin -> left);
  printf(" %d",cin -> key);
  inorder(cin -> right);
}

void preorder(struct data *cin){
  if(cin == NIL){
    return;
  }
  printf(" %d",cin -> key);
  preorder(cin -> left);
  preorder(cin -> right);
}

int main(){
  int num,i,x;
  char mozi[1000];

scanf("%d",&num);
for(i = 0;i < num;i++){
  scanf("%s",mozi);
  if(mozi[0] == 'f'){
    scanf("%d",&x);
    struct data *t = find(root,x);
    if(t != NIL){
      printf("yes\n");
    }
    else{
      printf("no\n");
    }
  }
  else if(strcmp(mozi,"insert") == 0){
    scanf("%d",&x);
    insert(x);
  }
  else if(strcmp(mozi,"print") == 0){
      inorder(root);
      printf("\n");
      preorder(root);
      printf("\n");
    }
  }
    return 0;
}

