PALIN - The Next Palindrome

A positive integer is called a palindrome if its representation in the decimal system is the same when read from left to right and from right to left. For a given positive integer K of not more than 1000000 digits, write the value of the smallest palindrome larger than K to output. Numbers are always displayed without leading zeros.

Input

The first line contains integer t, the number of test cases. Integers K are given in the next t lines.

Output

For each K, output the smallest palindrome larger than K.

Example

Input:
2
808
2133

Output:
818
2222

Warning: large Input/Output data, be careful with certain languages


Added by:adrian
Date:2004-05-01
Time limit:2s-9s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: NODEJS PERL6

hide comments
2017-06-20 10:49:23
Tips for beginners like me:
(1) Write down successive palindromes with 2 digits then 3 etc. in order to understand patterns.
(2) The numbers can have up to a million digits !
(3) Don't forget to deal with test cases starting with leading zeros (0000345 ->353). I have a feeling there are such test cases since he mentions leading zeros in the description.
(4) You might want to rembember the ASCII table...

It took me maybe 4 hours to find a good idea for the algorithm (I thought it through myself) , and then another couple of hours to implement...
Good luck!
2017-06-20 10:07:14
@balaram_tupili
I think using brute force here is impossble. You have a 10^6 DIGIT number (not a number with 6 digits).
2017-06-17 14:35:31
pls help TLE ...
i'm doing it in a brute force method using BigInteger in java ??
brute force works here ???
2017-06-11 02:52:05
I don't know what's wrong with my solution, as one of the comments I executed in ideone and have no problem :(
2017-06-10 10:36:34
Someone Pls tell me some efficient way to take input directly into vector (c++)....got AC but not satisfied with time and memory.
2017-06-06 20:51:36
Shouldnt the anserw for 2133 be 2145? According to windows calculator:
2145 = 1000 0110 0001
2017-06-05 13:54:52
what should be the ans of
00 and 01
as per me it should be 1 and 2
but spoj tool kit shows 11 for both?
2017-06-03 04:12:28
Guys my code is running everywhere except spoj......please help.... : \
2017-06-01 09:27:57
i'm using c++ and took my variable as int my program passes all the test cases but still it says wrong answer.
2017-05-31 18:07:00
Note for golang: This will cause bufio.Scanner crash with "buffer too long".
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.