import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
   static class Node
   {
      Integer key;
      Node left, right;
      Node(Integer key) { this.key = key; }
   }
   
   static Integer specialKey = Integer.MAX_VALUE;

   static Integer successor(Integer target)
   {
      Integer successor = successor(root, target);
      if (successor == specialKey)
         return null;
      return successor;
   }
   static Integer successor(Node current, Integer target)
   {
      if (current == null)
         return null;
      if (target.equals(current.key))
         if (current.right != null)
            return leftMost(current.right).key;
         else
            return specialKey;
      else
         if (target < current.key)
         {
            Integer s = successor(current.left, target);
            if (s == specialKey)
               return current.key;
            else
               return s;
         }
         else
            return successor(current.right, target);
   }

   static Node leftMost(Node current)
   {
      while (current.left != null)
         current = current.left;
      return current;
   }
   
   static Node root;
   
   public static void main(String[] args)
   {
      // Constructs this tree:
      //         6
      //        / \
      //       2   7
      //      / \
      //     1   4
      //        / \
      //       3   5
      
      root = new Node(6);
      root.left = new Node(2);
      root.left.left = new Node(1);
      root.left.right = new Node(4);
      root.left.right.left = new Node(3);
      root.left.right.right = new Node(5);
      root.right = new Node(7);
      for (int i = 0; i <= 7; i++)
         System.out.println("Successor of " + i + " is " + successor(i));
   }
}