import java.util.List;
import java.util.Arrays;
import java.util.function.IntPredicate;
import java.util.function.BiConsumer;
import java.util.stream.IntStream;
class KaprekarNumbers {
	public static void main(String[] args) {
		List<List<Integer>> inputs = Arrays.asList(
			Arrays.asList(2, 100),
			Arrays.asList(101, 9000)
		);
		
		IntPredicate isKaprekarNumber = x -> {
			String sqrd = Integer.toString((int) Math.pow(x, 2));
			return sqrd.length() > 1 && (Integer.parseInt(sqrd.substring(0, sqrd.length() / 2)) + Integer.parseInt(sqrd.substring(sqrd.length() / 2))) == x;
		};
		
		BiConsumer<Integer, Integer> printKaprekarInRange = (low, high) -> IntStream.range(low, high + 1).filter(isKaprekarNumber).forEach(x -> System.out.print(x + " "));
		
		inputs.forEach(cur -> {
			printKaprekarInRange.accept(cur.get(0), cur.get(1));
			System.out.println();
		});
	}
}