function NearestPalindromeNumbers(n)
s = string(n)
if (match(Regex("^10+\$"), s) != nothing) return [n - 1, n + 1] end
j = length(s) รท 2
i = length(s) - j
a = s[1:i]
b = a[j:-1:1]
x = parse(BigInt, a * b)
if x == n return x end
a = string(parse(BigInt, a) + (x < n ? 1 : -1))
b = a[j:-1:1]
y = parse(BigInt, a * b)
if (d < 0) return x end
if (d > 0) return y end
sort([x, y])
end
q = [0, 5, 17, 100, 2024, 12345679042654321, 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989]
for n in q println("[$(join(NearestPalindromeNumbers(n), ", "))]") end
ZnVuY3Rpb24gTmVhcmVzdFBhbGluZHJvbWVOdW1iZXJzKG4pCiAgICBzID0gc3RyaW5nKG4pCiAgICBpZiAobWF0Y2goUmVnZXgoIl4xMCtcJCIpLCBzKSAhPSBub3RoaW5nKSByZXR1cm4gW24gLSAxLCBuICsgMV0gZW5kCgogICAgaiA9IGxlbmd0aChzKSDDtyAyCiAgICBpID0gbGVuZ3RoKHMpIC0gagogICAgYSA9IHNbMTppXQogICAgYiA9IGFbajotMToxXQogICAgeCA9IHBhcnNlKEJpZ0ludCwgYSAqIGIpCiAgICBpZiB4ID09IG4gcmV0dXJuIHggZW5kCgogICAgYSA9IHN0cmluZyhwYXJzZShCaWdJbnQsIGEpICsgKHggPCBuID8gMSA6IC0xKSkKICAgIGIgPSBhW2o6LTE6MV0KICAgIHkgPSBwYXJzZShCaWdJbnQsIGEgKiBiKSAKICAgIGQgPSBhYnMoeCAtIG4pIC0gYWJzKHkgLSBuKQogICAgaWYgKGQgPCAwKSByZXR1cm4geCBlbmQKICAgIGlmIChkID4gMCkgcmV0dXJuIHkgZW5kCiAgICBzb3J0KFt4LCB5XSkKZW5kCgpxID0gWzAsIDUsIDE3LCAxMDAsIDIwMjQsIDEyMzQ1Njc5MDQyNjU0MzIxLCAzMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA1ODIwOTc0OTQ0NTkyMzA3ODE2NDA2Mjg2MjA4OTk4NjI4MDM0ODI1MzQyMTE3MDY3OTgyMTQ4MDg2NTEzMjgyMzA2NjQ3MDkzODQ0NjA5NTUwNTgyMjMxNzI1MzU5NDA4MTI4NDgxMTE3NDUwMjg0MTAyNzAxOTM4NTIxMTA1NTU5NjQ0NjIyOTQ4OTU0OTMwMzgxOTY0NDI4ODEwOTc1NjY1OTMzNDQ2MTI4NDc1NjQ4MjMzNzg2NzgzMTY1MjcxMjAxOTA5MTQ1NjQ4NTY2OTIzNDYwMzQ4NjEwNDU0MzI2NjQ4MjEzMzkzNjA3MjYwMjQ5MTQxMjczNzI0NTg3MDA2NjA2MzE1NTg4MTc0ODgxNTIwOTIwOTYyODI5MjU0MDkxNzE1MzY0MzY3ODkyNTkwMzYwMDExMzMwNTMwNTQ4ODIwNDY2NTIxMzg0MTQ2OTUxOTQxNTExNjA5NDMzMDU3MjcwMzY1NzU5NTkxOTUzMDkyMTg2MTE3MzgxOTMyNjExNzkzMTA1MTE4NTQ4MDc0NDYyMzc5OTYyNzQ5NTY3MzUxODg1NzUyNzI0ODkxMjI3OTM4MTgzMDExOTQ5MTI5ODMzNjczMzYyNDQwNjU2NjQzMDg2MDIxMzk0OTQ2Mzk1MjI0NzM3MTkwNzAyMTc5ODYwOTQzNzAyNzcwNTM5MjE3MTc2MjkzMTc2NzUyMzg0Njc0ODE4NDY3NjY5NDA1MTMyMDAwNTY4MTI3MTQ1MjYzNTYwODI3Nzg1NzcxMzQyNzU3Nzg5NjA5MTczNjM3MTc4NzIxNDY4NDQwOTAxMjI0OTUzNDMwMTQ2NTQ5NTg1MzcxMDUwNzkyMjc5Njg5MjU4OTIzNTQyMDE5OTU2MTEyMTI5MDIxOTYwODY0MDM0NDE4MTU5ODEzNjI5Nzc0NzcxMzA5OTYwNTE4NzA3MjExMzQ5OTk5OTk4MzcyOTc4MDQ5OTUxMDU5NzMxNzMyODE2MDk2MzE4NTk1MDI0NDU5NDU1MzQ2OTA4MzAyNjQyNTIyMzA4MjUzMzQ0Njg1MDM1MjYxOTMxMTg4MTcxMDEwMDAzMTM3ODM4NzUyODg2NTg3NTMzMjA4MzgxNDIwNjE3MTc3NjY5MTQ3MzAzNTk4MjUzNDkwNDI4NzU1NDY4NzMxMTU5NTYyODYzODgyMzUzNzg3NTkzNzUxOTU3NzgxODU3NzgwNTMyMTcxMjI2ODA2NjEzMDAxOTI3ODc2NjExMTk1OTA5MjE2NDIwMTk4OV0KCmZvciBuIGluIHEgcHJpbnRsbigiWyQoam9pbihOZWFyZXN0UGFsaW5kcm9tZU51bWJlcnMobiksICIsICIpKV0iKSBlbmQ=