import java.util.*;

public class BinarySearchTreeTester {
    public static void test(BinarySearchTree root) {
        Scanner in = new Scanner(System.in);
        
        String input;
        do {
            System.out.print("> ");
            input = in.nextLine();
            String[] cmd = input.split(" ");
            if (cmd.length >= 2) {
                for (int i = 1; i < cmd.length; ++i) {
                    String arg = cmd[i];
                    if (cmd[0].equals("add")) {
                        root.add(arg);
                        System.out.println("Added " + arg);
                        System.out.println(root);
                    } else if (cmd[0].equals("find")) {
                        if (root.contains(arg)) {
                            System.out.println(arg + " present");
                        } else {
                            System.out.println(arg + " absent");
                        }
                    } else if (cmd[0].equals("remove")) {
                        root.remove(arg);
                        System.out.println("Removed " + arg);
                        System.out.println(root);
                    } else if (cmd[0].equals("successor")) {
                        String s = root.successor(arg);
			System.out.println(s == null ? "No successor" : s);
                    } else if (cmd[0].equals("predecessor")) {
                        String s = root.predecessor(arg);
			System.out.println(s == null ? "No predecessor" : s);
                    } else {
			System.out.println("Unrecognized command");
                    }
                }
            } else if (cmd[0].equals("inorder")) {
                for (String s: root) {System.out.print(s + " ");}
                System.out.println();
            } else if (!cmd[0].equals("quit")) {
		if (!cmd[0].equals("help")) {
		    System.out.println("Unrecognized command");
		}
		System.out.println("Command list:");
		System.out.println("help");
		System.out.println("add [node_name]");
		System.out.println("remove [node_name]");
		System.out.println("successor [node_name]");
		System.out.println("predecessor [node_name]");
		System.out.println("inorder");
		System.out.println("quit");
            }
        } while (!input.equals("quit"));
    }
    
    public static void main(String[] args) {
        BinarySearchTreeTester.test(new BinarySearchTree());
    }
}
