import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

class Main {

	static long changecount = 0;
   public static void main(String args[]) throws IOException{

	   Scanner sc = new Scanner(System.in);
	   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	   int n = Integer.parseInt( br.readLine()  );

	   Tree tree = new Tree();


       for(int i = 0; i < n ; i++){

    	   String[] string =  br.readLine().split(" ");
    	   if( string[0].equals("insert") ){
    		   tree.insert( Integer.parseInt(string[1]) );
    	   }
    	   else if(string[0].equals("print")) {
    		   tree.inorder(tree.root);
    	       System.out.println();
    	       tree.preorder(tree.root);
    	       System.out.println();
    	   }
    	   else if(string[0].equals("find")) {
    		   //System.out.println( tree.find( tree.root, Integer.parseInt(string[1]) ) );
    		  Node find =  tree.find( tree.root, Integer.parseInt(string[1]) );

              if( find != null ){
            	  System.out.println("yes");
              }
              else{
            	  System.out.println("no");
              }
    	   }
    	   else if(string[0].equals("delete")) {
    		   tree.treeDelete( tree.find(tree.root, Integer.parseInt(string[1])) );


    	   }

       }



   }


}



class Node{

	int  key;
	Node left;
    Node right;
    Node parent;

    Node(int x) {
        key = x;
        left = null;
        right = null;
        parent = null;
    }

}




class Tree{

	Node root = null;


	void insert( int date ){

		Node z = new Node(date);
		Node y = null;
		Node x = root;

		while(x != null){
			 y = x ;// ???????¨????
			 if( z.key < x.key ){
				 x = x.left; // ?????????????§????
			 }
			 else{
				 x = x.right; // ?????????????§????
			 }

		}

		z.parent = y;

		if ( y == null ){
            root = z;
		}
		else if(z.key < y.key){
			y.left = z; // z ??? y ?????????????????????

		}
		else{
			y.right = z ;// z ??? y ?????????????????????
		}


	}



	Node treeMaximum(Node x) {
        if (x == null) return null;
        while (x.right != null) {
             x = x.right;
        }
        return x;
    }

	Node treeMinimum(Node x) {
        if (x == null) return null;
        while (x.left != null) {
            x = x.left;
        }
        return x;
    }


    Node treeSuccessor(Node x) {
	     if (x.right == null && x.left == null) {
	           return null;
	     }
	     if (x.right == null) {
	           x.left.parent = x.parent;
	           return x.left;
	     }
	     if (x.left == null) {
	           x.right.parent = x.parent;
	           return x.right;
	     }

//		      Node r = treeMaximum(x.left);
//		      x.key = r.key;
//		      treeDelete(r);
//		      return x;

	         Node l = treeMinimum(x.right);
		     x.key = l.key;
		     treeDelete(l);
		     return x;
     }

	 void treeDelete(Node z) {
        if (z == null) return;

        Node p = z.parent;
        if (p == null) {
            treeSuccessor(root);
            return;
        }
        if (p.right == z) {
            p.right = treeSuccessor(z);
        } else { // p.left == z
            p.left = treeSuccessor(z);
        }
        return;

    }



	Node find(Node tree, int serch){


		while (tree != null) {

			if( tree.key == serch ){
				//System.out.println("yes");
				return tree;
			}
			else if(tree.key > serch ){
                 tree = tree.left;
			}
			else{
				tree = tree.right;
			}
	    }
		//System.out.println("no");
        return null;
	}


	 void preorder(Node tree ) {

	        if (tree != null) {
	       	 System.out.print(" " + tree.key);
	        	preorder(tree.left);

	           preorder(tree.right);
	       }
	}

	    void inorder (Node tree) {

	    	         if (tree != null) {

	    	        	inorder(tree.left);
	    	            System.out.print(" " + tree.key);
	    	            inorder(tree.right);
	    	        }
	     }


	    void postorder (Node tree) {
	        if (tree != null) {

	        	postorder(tree.left);
	        	postorder(tree.right);
	            System.out.print(" " + tree.key);
	       }
	}




}

Measured memory_bytes: 140584