use std::collections::BTreeSet;
fn rev(n: usize) -> usize {
fn aux(acc: usize, m: usize) -> usize {
if m == 0 {acc} else {aux(acc * 10 + m % 10, m / 10)}
}
aux(0, n)
}
fn f(n: usize) -> Option<BTreeSet<usize>> {
(0..=n).rev().zip(n..).find(|&(a, b)| a == rev(a) || b == rev(b)).map(|(a, b)|
[a, b].iter().filter(|&&x| x == rev(x)).cloned().collect()
)
}
fn g(n: usize) {
println!("入力: {}\n出力: {:?}\n", n, f(n).unwrap_or_default());
}
fn main() {
[0, 17, 100].iter().cloned().for_each(g);
}
dXNlIHN0ZDo6Y29sbGVjdGlvbnM6OkJUcmVlU2V0OwpmbiByZXYobjogdXNpemUpIC0+IHVzaXplIHsKCWZuIGF1eChhY2M6IHVzaXplLCBtOiB1c2l6ZSkgLT4gdXNpemUgewoJCWlmIG0gPT0gMCB7YWNjfSBlbHNlIHthdXgoYWNjICogMTAgKyBtICUgMTAsIG0gLyAxMCl9Cgl9CglhdXgoMCwgbikKfQpmbiBmKG46IHVzaXplKSAtPiBPcHRpb248QlRyZWVTZXQ8dXNpemU+PiB7CgkoMC4uPW4pLnJldigpLnppcChuLi4pLmZpbmQofCYoYSwgYil8IGEgPT0gcmV2KGEpIHx8IGIgPT0gcmV2KGIpKS5tYXAofChhLCBiKXwgCgkJW2EsIGJdLml0ZXIoKS5maWx0ZXIofCYmeHwgeCA9PSByZXYoeCkpLmNsb25lZCgpLmNvbGxlY3QoKQoJKQp9CmZuIGcobjogdXNpemUpIHsKCXByaW50bG4hKCLlhaXlips6IHt9XG7lh7rlips6IHs6P31cbiIsIG4sIGYobikudW53cmFwX29yX2RlZmF1bHQoKSk7Cn0KZm4gbWFpbigpIHsKCVswLCAxNywgMTAwXS5pdGVyKCkuY2xvbmVkKCkuZm9yX2VhY2goZyk7Cn0=