P1207 [USACO1.2] Dual Palindromes

Background

If a number reads the same from left to right and from right to left, then it is called a "palindrome." For example, $12321$ is a palindrome, while $77778$ is not. We do not allow leading zeros in the representation; therefore, $0220$ is not considered a palindrome. In fact, some numbers (such as $21$) are not palindromes in base $10$, but they are palindromes in other bases (for example, in base $2$ it is $10101$).

Description

A number that reads the same from right to left as when read from left to right is called a palindrome. The number $12321$ is a palindrome; the number $77778$ is not. Palindromes have neither leading nor trailing zeroes, so $0220$ is not a palindrome. The number $21$ (base $10$) is not a palindrome in base $10$, but the number $21$ (base $10$) is a palindrome in base $2$ ($10101$). Write a program that reads two numbers expressed in base $10$: - $N$ ($1 \le N \le 15$) - $S$ ($0 < S < 10000$) Then find and print (in base $10$) the first $N$ numbers strictly greater than $S$ that are palindromic when written in two or more number bases ($2 \le \text{base} \le 10$). Solutions to this problem do not require manipulating integers larger than the standard $32$ bits.

Input Format

A single line with space separated integers $N$ and $S$.

Output Format

$N$ lines, each with a base $10$ number that is palindromic when expressed in at least two of the bases $2..10$. The numbers should be listed in order from smallest to largest.

Explanation/Hint

USACO Training Section 1.2.