public TreeNode<Integer> findFirstCommonAncestor(TreeNode<Integer> root,
			TreeNode<Integer> n1, TreeNode<Integer> n2) {
		if (root == null || n1 == null || n2 == null)
			return null;
		boolean n1InLeft = canReach(root.left, n1);
		boolean n2InLeft = canReach(root.left, n2);
		boolean leftCover = n1InLeft && n2InLeft;

		if (!leftCover) {
			return root;
		}
		if (leftCover)
			return findFirstCommonAncestor(root.left, n1, n2);

		return findFirstCommonAncestor(root.right, n1, n2);

	}