#include <iostream>
#include <string>
#include <regex>
#include <vector>
#include <algorithm>
using namespace std;
vector<long long> NearestPalindromeNumbers(long long n)
{
string s = to_string(n);
if (regex_match(s, regex("^10+$"))) return {n - 1, n + 1};
int j = s.length() / 2;
int i = s.length() - j;
reverse_copy(&s[0], &s[j], &s[i]);
long long x = stoll(s);
if (x == n) return {x};
s.replace(0, i, to_string(stoll(s.substr(0, i)) + (x < n ? 1 : -1)));
reverse_copy(&s[0], &s[j], &s[i]);
long long y = stoll(s);
long long d = abs(x - n) - abs(y - n);
if (d < 0) return {x};
if (d > 0) return {y};
if (x < y) return {x, y}; else return {y, x};
}
int main(void)
{
long long q[] = {0, 5, 10, 17, 100, 1000, 2024, 12345679042654321};
for (auto n : q) {
auto v = NearestPalindromeNumbers(n);
for (auto &x : v) cout << (&x == &v[0] ? "[" : ", ") << x;
cout << "]" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGxvbmcgbG9uZz4gTmVhcmVzdFBhbGluZHJvbWVOdW1iZXJzKGxvbmcgbG9uZyBuKQp7CiAgICBzdHJpbmcgcyA9IHRvX3N0cmluZyhuKTsKICAgIGlmIChyZWdleF9tYXRjaChzLCByZWdleCgiXjEwKyQiKSkpIHJldHVybiB7biAtIDEsIG4gKyAxfTsKCiAgICBpbnQgaiA9IHMubGVuZ3RoKCkgLyAyOwogICAgaW50IGkgPSBzLmxlbmd0aCgpIC0gajsKICAgIHJldmVyc2VfY29weSgmc1swXSwgJnNbal0sICZzW2ldKTsKICAgIGxvbmcgbG9uZyB4ID0gc3RvbGwocyk7CiAgICBpZiAoeCA9PSBuKSByZXR1cm4ge3h9OwoKICAgIHMucmVwbGFjZSgwLCBpLCB0b19zdHJpbmcoc3RvbGwocy5zdWJzdHIoMCwgaSkpICsgKHggPCBuID8gMSA6IC0xKSkpOwogICAgcmV2ZXJzZV9jb3B5KCZzWzBdLCAmc1tqXSwgJnNbaV0pOwogICAgbG9uZyBsb25nIHkgPSBzdG9sbChzKTsKICAgIGxvbmcgbG9uZyBkID0gYWJzKHggLSBuKSAtIGFicyh5IC0gbik7CiAgICBpZiAoZCA8IDApIHJldHVybiB7eH07CiAgICBpZiAoZCA+IDApIHJldHVybiB7eX07CiAgICBpZiAoeCA8IHkpIHJldHVybiB7eCwgeX07IGVsc2UgcmV0dXJuIHt5LCB4fTsKfQoKaW50IG1haW4odm9pZCkKewogICAgbG9uZyBsb25nIHFbXSA9IHswLCA1LCAxMCwgMTcsIDEwMCwgMTAwMCwgMjAyNCwgMTIzNDU2NzkwNDI2NTQzMjF9OwoKICAgIGZvciAoYXV0byBuIDogcSkgewogICAgICAgIGF1dG8gdiA9IE5lYXJlc3RQYWxpbmRyb21lTnVtYmVycyhuKTsKICAgICAgICBmb3IgKGF1dG8gJnggOiB2KSBjb3V0IDw8ICgmeCA9PSAmdlswXSA/ICJbIiA6ICIsICIpIDw8IHg7CiAgICAgICAgY291dCA8PCAiXSIgPDwgZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9