import std.algorithm;
import std.bigint;
import std.math;
import std.regex;
import std.stdio;
import std.string;
string rev(string s)
{
return s.split("").reverse.join;
}
BigInt[] NearestPalindromeNumbers(BigInt n)
{
string s = toDecimalString(n);
if (s.match(regex("^10+$"))) return [n - 1, n + 1];
long j = s.length / 2;
long i = s.length - j;
string a = s[0..i];
string b = a[0..j].rev;
BigInt x = BigInt(a ~ b);
if (x == n) return [x];
a = toDecimalString(BigInt(a) + (x < n ? 1 : -1));
b = a[0..j].rev;
BigInt y = BigInt(a ~ b);
BigInt d = abs(x - n) - abs(y - n);
if (d < 0) return [x];
if (d > 0) return [y];
return x < y ? [x, y] : [y, x];
}
BigInt[] q = [0, 5, 17, 100, 2024, BigInt("12345679042654321"), BigInt("31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989")];
void main()
{
foreach (n; q) writeln(NearestPalindromeNumbers(n));
}
aW1wb3J0IHN0ZC5hbGdvcml0aG07CmltcG9ydCBzdGQuYmlnaW50OwppbXBvcnQgc3RkLm1hdGg7CmltcG9ydCBzdGQucmVnZXg7CmltcG9ydCBzdGQuc3RkaW87CmltcG9ydCBzdGQuc3RyaW5nOwoKc3RyaW5nIHJldihzdHJpbmcgcykKewogICAgcmV0dXJuIHMuc3BsaXQoIiIpLnJldmVyc2Uuam9pbjsKfQoKQmlnSW50W10gTmVhcmVzdFBhbGluZHJvbWVOdW1iZXJzKEJpZ0ludCBuKQp7CiAgICBzdHJpbmcgcyA9IHRvRGVjaW1hbFN0cmluZyhuKTsKICAgIGlmIChzLm1hdGNoKHJlZ2V4KCJeMTArJCIpKSkgcmV0dXJuIFtuIC0gMSwgbiArIDFdOwoKICAgIGxvbmcgaiA9IHMubGVuZ3RoIC8gMjsKICAgIGxvbmcgaSA9IHMubGVuZ3RoIC0gajsKICAgIHN0cmluZyBhID0gc1swLi5pXTsKICAgIHN0cmluZyBiID0gYVswLi5qXS5yZXY7CiAgICBCaWdJbnQgeCA9IEJpZ0ludChhIH4gYik7CiAgICBpZiAoeCA9PSBuKSByZXR1cm4gW3hdOwoKICAgIGEgPSB0b0RlY2ltYWxTdHJpbmcoQmlnSW50KGEpICsgKHggPCBuID8gMSA6IC0xKSk7CiAgICBiID0gYVswLi5qXS5yZXY7CiAgICBCaWdJbnQgeSA9IEJpZ0ludChhIH4gYik7CiAgICBCaWdJbnQgZCA9IGFicyh4IC0gbikgLSBhYnMoeSAtIG4pOwogICAgaWYgKGQgPCAwKSByZXR1cm4gW3hdOwogICAgaWYgKGQgPiAwKSByZXR1cm4gW3ldOwogICAgcmV0dXJuIHggPCB5ID8gW3gsIHldIDogW3ksIHhdOwp9IAoKQmlnSW50W10gcSA9IFswLCA1LCAxNywgMTAwLCAyMDI0LCBCaWdJbnQoIjEyMzQ1Njc5MDQyNjU0MzIxIiksIEJpZ0ludCgiMzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4NDE5NzE2OTM5OTM3NTEwNTgyMDk3NDk0NDU5MjMwNzgxNjQwNjI4NjIwODk5ODYyODAzNDgyNTM0MjExNzA2Nzk4MjE0ODA4NjUxMzI4MjMwNjY0NzA5Mzg0NDYwOTU1MDU4MjIzMTcyNTM1OTQwODEyODQ4MTExNzQ1MDI4NDEwMjcwMTkzODUyMTEwNTU1OTY0NDYyMjk0ODk1NDkzMDM4MTk2NDQyODgxMDk3NTY2NTkzMzQ0NjEyODQ3NTY0ODIzMzc4Njc4MzE2NTI3MTIwMTkwOTE0NTY0ODU2NjkyMzQ2MDM0ODYxMDQ1NDMyNjY0ODIxMzM5MzYwNzI2MDI0OTE0MTI3MzcyNDU4NzAwNjYwNjMxNTU4ODE3NDg4MTUyMDkyMDk2MjgyOTI1NDA5MTcxNTM2NDM2Nzg5MjU5MDM2MDAxMTMzMDUzMDU0ODgyMDQ2NjUyMTM4NDE0Njk1MTk0MTUxMTYwOTQzMzA1NzI3MDM2NTc1OTU5MTk1MzA5MjE4NjExNzM4MTkzMjYxMTc5MzEwNTExODU0ODA3NDQ2MjM3OTk2Mjc0OTU2NzM1MTg4NTc1MjcyNDg5MTIyNzkzODE4MzAxMTk0OTEyOTgzMzY3MzM2MjQ0MDY1NjY0MzA4NjAyMTM5NDk0NjM5NTIyNDczNzE5MDcwMjE3OTg2MDk0MzcwMjc3MDUzOTIxNzE3NjI5MzE3Njc1MjM4NDY3NDgxODQ2NzY2OTQwNTEzMjAwMDU2ODEyNzE0NTI2MzU2MDgyNzc4NTc3MTM0Mjc1Nzc4OTYwOTE3MzYzNzE3ODcyMTQ2ODQ0MDkwMTIyNDk1MzQzMDE0NjU0OTU4NTM3MTA1MDc5MjI3OTY4OTI1ODkyMzU0MjAxOTk1NjExMjEyOTAyMTk2MDg2NDAzNDQxODE1OTgxMzYyOTc3NDc3MTMwOTk2MDUxODcwNzIxMTM0OTk5OTk5ODM3Mjk3ODA0OTk1MTA1OTczMTczMjgxNjA5NjMxODU5NTAyNDQ1OTQ1NTM0NjkwODMwMjY0MjUyMjMwODI1MzM0NDY4NTAzNTI2MTkzMTE4ODE3MTAxMDAwMzEzNzgzODc1Mjg4NjU4NzUzMzIwODM4MTQyMDYxNzE3NzY2OTE0NzMwMzU5ODI1MzQ5MDQyODc1NTQ2ODczMTE1OTU2Mjg2Mzg4MjM1Mzc4NzU5Mzc1MTk1Nzc4MTg1Nzc4MDUzMjE3MTIyNjgwNjYxMzAwMTkyNzg3NjYxMTE5NTkwOTIxNjQyMDE5ODkiKV07Cgp2b2lkIG1haW4oKQp7CiAgICBmb3JlYWNoIChuOyBxKSB3cml0ZWxuKE5lYXJlc3RQYWxpbmRyb21lTnVtYmVycyhuKSk7Cn0=