(defun nearest-palindromic-numbers (n &key (radix 10))
(check-type n integer)
(if (< n radix)
(list (max 0 n))
(block nil
(let* ((s (format nil "~vR" radix n))
(len (length s))
a-len b-len a b x y d)
(when (= n (expt radix (1- len)))
(return (list (1- n) (1+ n))))
(setq b-len (floor len 2)
a-len (- len b-len)
a (subseq s 0 a-len)
b (reverse (subseq s 0 b-len))
x (parse-integer (format nil "~A~A" a b) :radix radix))
(when (= x n)
(return (list x)))
(setq a (format nil "~vR" radix
(+ (parse-integer a :radix radix)
(if (< x n) 1 -1)))
b (reverse (subseq a 0 b-len))
y (parse-integer (format nil "~A~A" a b) :radix radix)
d (- (abs (- x n))
(abs (- y n))))
(cond ((< d 0) (list x))
((> d 0) (list y))
((< x y) (list x y))
(t (list y x)))))))
(loop with radix = 10
for line = (read-line nil nil)
for n = (and line (parse-integer line :radix radix))
while n
do (format t "~{~A~^, ~}~%"
(mapcar (lambda (p) (format nil "~vR" radix p))
(nearest-palindromic-numbers n :radix radix))))
KGRlZnVuIG5lYXJlc3QtcGFsaW5kcm9taWMtbnVtYmVycyAobiAma2V5IChyYWRpeCAxMCkpCiAgKGNoZWNrLXR5cGUgbiBpbnRlZ2VyKQogIChpZiAoPCBuIHJhZGl4KQogICAgICAobGlzdCAobWF4IDAgbikpCiAgICAgIChibG9jayBuaWwKICAgICAgICAobGV0KiAoKHMgKGZvcm1hdCBuaWwgIn52UiIgcmFkaXggbikpCiAgICAgICAgICAgICAgIChsZW4gKGxlbmd0aCBzKSkKICAgICAgICAgICAgICAgYS1sZW4gYi1sZW4gYSBiIHggeSBkKQogICAgICAgICAgKHdoZW4gKD0gbiAoZXhwdCByYWRpeCAoMS0gbGVuKSkpCiAgICAgICAgICAgIChyZXR1cm4gKGxpc3QgKDEtIG4pICgxKyBuKSkpKQogICAgICAgICAgKHNldHEgYi1sZW4gKGZsb29yIGxlbiAyKQogICAgICAgICAgICAgICAgYS1sZW4gKC0gbGVuIGItbGVuKQogICAgICAgICAgICAgICAgYSAoc3Vic2VxIHMgMCBhLWxlbikKICAgICAgICAgICAgICAgIGIgKHJldmVyc2UgKHN1YnNlcSBzIDAgYi1sZW4pKQogICAgICAgICAgICAgICAgeCAocGFyc2UtaW50ZWdlciAoZm9ybWF0IG5pbCAifkF+QSIgYSBiKSA6cmFkaXggcmFkaXgpKQogICAgICAgICAgKHdoZW4gKD0geCBuKQogICAgICAgICAgICAocmV0dXJuIChsaXN0IHgpKSkKICAgICAgICAgIChzZXRxIGEgKGZvcm1hdCBuaWwgIn52UiIgcmFkaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAoKyAocGFyc2UtaW50ZWdlciBhIDpyYWRpeCByYWRpeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgeCBuKSAxIC0xKSkpCiAgICAgICAgICAgICAgICBiIChyZXZlcnNlIChzdWJzZXEgYSAwIGItbGVuKSkKICAgICAgICAgICAgICAgIHkgKHBhcnNlLWludGVnZXIgKGZvcm1hdCBuaWwgIn5BfkEiIGEgYikgOnJhZGl4IHJhZGl4KQogICAgICAgICAgICAgICAgZCAoLSAoYWJzICgtIHggbikpCiAgICAgICAgICAgICAgICAgICAgIChhYnMgKC0geSBuKSkpKQogICAgICAgICAgKGNvbmQgKCg8IGQgMCkgKGxpc3QgeCkpCiAgICAgICAgICAgICAgICAoKD4gZCAwKSAobGlzdCB5KSkKICAgICAgICAgICAgICAgICgoPCB4IHkpIChsaXN0IHggeSkpCiAgICAgICAgICAgICAgICAodCAobGlzdCB5IHgpKSkpKSkpCgoobG9vcCB3aXRoIHJhZGl4ID0gMTAKICAgICAgZm9yIGxpbmUgPSAocmVhZC1saW5lIG5pbCBuaWwpCiAgICAgIGZvciBuID0gKGFuZCBsaW5lIChwYXJzZS1pbnRlZ2VyIGxpbmUgOnJhZGl4IHJhZGl4KSkKICAgICAgd2hpbGUgbgogICAgICBkbyAoZm9ybWF0IHQgIn57fkF+Xiwgfn1+JSIKICAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHApIChmb3JtYXQgbmlsICJ+dlIiIHJhZGl4IHApKQogICAgICAgICAgICAgICAgICAgICAgICAgKG5lYXJlc3QtcGFsaW5kcm9taWMtbnVtYmVycyBuIDpyYWRpeCByYWRpeCkpKSkK
MAo1CjE3CjEwMAoyMDI0CjEyMzQ1OTMyMQozMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA1ODIwOTc0OTQ0NTkyMzA3ODE2NDA2Mjg2MjA4OTk4NjI4MDM0ODI1MzQyMTE3MDY3OTgyMTQ4MDg2NTEzMjgyMzA2NjQ3MDkzODQ0NjA5NTUwNTgyMjMxNzI1MzU5NDA4MTI4NDgxMTE3NDUwMjg0MTAyNzAxOTM4NTIxMTA1NTU5NjQ0NjIyOTQ4OTU0OTMwMzgxOTY0NDI4ODEwOTc1NjY1OTMzNDQ2MTI4NDc1NjQ4MjMzNzg2NzgzMTY1MjcxMjAxOTA5MTQ1NjQ4NTY2OTIzNDYwMzQ4NjEwNDU0MzI2NjQ4MjEzMzkzNjA3MjYwMjQ5MTQxMjczNzI0NTg3MDA2NjA2MzE1NTg4MTc0ODgxNTIwOTIwOTYyODI5MjU0MDkxNzE1MzY0MzY3ODkyNTkwMzYwMDExMzMwNTMwNTQ4ODIwNDY2NTIxMzg0MTQ2OTUxOTQxNTExNjA5NDMzMDU3MjcwMzY1NzU5NTkxOTUzMDkyMTg2MTE3MzgxOTMyNjExNzkzMTA1MTE4NTQ4MDc0NDYyMzc5OTYyNzQ5NTY3MzUxODg1NzUyNzI0ODkxMjI3OTM4MTgzMDExOTQ5MTI5ODMzNjczMzYyNDQwNjU2NjQzMDg2MDIxMzk0OTQ2Mzk1MjI0NzM3MTkwNzAyMTc5ODYwOTQzNzAyNzcwNTM5MjE3MTc2MjkzMTc2NzUyMzg0Njc0ODE4NDY3NjY5NDA1MTMyMDAwNTY4MTI3MTQ1MjYzNTYwODI3Nzg1NzcxMzQyNzU3Nzg5NjA5MTczNjM3MTc4NzIxNDY4NDQwOTAxMjI0OTUzNDMwMTQ2NTQ5NTg1MzcxMDUwNzkyMjc5Njg5MjU4OTIzNTQyMDE5OTU2MTEyMTI5MDIxOTYwODY0MDM0NDE4MTU5ODEzNjI5Nzc0NzcxMzA5OTYwNTE4NzA3MjExMzQ5OTk5OTk4MzcyOTc4MDQ5OTUxMDU5NzMxNzMyODE2MDk2MzE4NTk1MDI0NDU5NDU1MzQ2OTA4MzAyNjQyNTIyMzA4MjUzMzQ0Njg1MDM1MjYxOTMxMTg4MTcxMDEwMDAzMTM3ODM4NzUyODg2NTg3NTMzMjA4MzgxNDIwNjE3MTc3NjY5MTQ3MzAzNTk4MjUzNDkwNDI4NzU1NDY4NzMxMTU5NTYyODYzODgyMzUzNzg3NTkzNzUxOTU3NzgxODU3NzgwNTMyMTcxMjI2ODA2NjEzMDAxOTI3ODc2NjExMTk1OTA5MjE2NDIwMTk4OQo=
0
5
17
100
2024
123459321
31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989