//二分探索木
//参考：https://onlinejudge.u-aizu.ac.jp/solutions/problem/ALDS1_8_A/review/1911655/emine/C%23
//Nodeクラスの中にNodeメンバ関数を作っていてそのやり方が分からなかった
using System;
using System.Collections.Generic;

namespace tst
{
    class Program
    {
        public class Node
        {
            internal int key;
            internal Node left;
            internal Node right;
            public Node(int key)
            {//引数付きコンストラクタ。その都度初期化できる。
                this.key = key;
            }
        }
        static Node root;
        public static void Insert(int k)
        {
            //yはxの親。xはTの根。
            Node x = root;
            Node y = null;
            Node z = new Node(k);//keyにkを入れる
            while (x != null)
            {
                y = x;
                if (z.key < x.key)
                {
                    x = x.left;
                }
                else
                {
                    x = x.right;
                }

            }
            if (y == null)
            {
                root = z;
            }
            else if(z.key<y.key)
            {
                y.left = z;
            }
            else
            {
                y.right = z;
            }
        }
        public static List<bool> L=new List<bool>();
        public static void Find(Node u, int target)
        {
            //Console.WriteLine("key={0},target={1}",u.key,target);
            if (u.key == target)
            {
                L.Add(true);
                return;
            }else if(u.left==null && u.right == null)
            {
                L.Add(false);
                return;
            }
            if (target < u.key)
            {
                if (u.left != null) { Find(u.left, target); }
                else{ L.Add(false);return;}
            }else if (u.key < target)
            {
                if(u.right != null) { Find(u.right, target); }
                else { L.Add(false); return; }
            }

        }
        public static void ResFind()
        {
            if (L.Count == 0) return;
            for(int i=0; i<L.Count; i++)
            {
                if (L[i]) Console.WriteLine("yes");
                else Console.WriteLine("no");
            }
            L = new List<bool>();//表示したら空にする
        }
        public static void Inorder(Node u)
        {
            if (u == null) return;
            Inorder(u.left);
            Console.Write(" " + u.key);
            Inorder(u.right);
        }
        public static void Preorder(Node u)
        {
            if (u == null) return;
            Console.Write(" " + u.key);
            Preorder(u.left);
            Preorder(u.right);
        }
        public static void Main()
        {
            int n = int.Parse(Console.ReadLine());
            for (int i=0; i<n; i++)
            {
                String[] In = Console.ReadLine().Split(' ');
                if (In[0] == "insert")
                {
                    Insert(int.Parse(In[1]));
                }
                else if(In[0] == "find")
                {
                    Find(root, int.Parse(In[1]));
                }
                else if(In[0] == "print")
                {
                    ResFind();
                    Inorder(root);
                    Console.WriteLine(); 
                    Preorder(root);
                    Console.WriteLine();
                }
            }
            ResFind();
        }
    }
}


Measured memory_bytes: 34092