#include <cstdint>
#include <climits>
#include <cmath>
#include <iostream>
using namespace std;
typedef uint64_t Integer;
constexpr Integer power(Integer a, int n) {
return (n == 0) ? 1 : a*power(a, n-1);
}
constexpr Integer power13[10] = {
power(0,13), power(1,13), power(2,13), power(3,13), power(4,13),
power(5,13), power(6,13), power(7,13), power(8,13), power(9,13),
};
template<unsigned K> inline void crack(const int from, const Integer acc) {
for (int n = from; n < 10; n++) {
crack<K-1>(n, acc + power13[n]);
}
}
template<> inline void crack<0>(const int from, const Integer acc) {
Integer a = acc;
Integer sum = 0;
while (a != 0) {
sum += power13[a%10];
a /= 10;
}
if (acc == sum) {
cout << acc << endl;
}
}
int main() {
constexpr int N = 15;
constexpr int BITS = sizeof(Integer)*CHAR_BIT;
static_assert(BITS > log2(N) + 13*log2(9), "Integer is too small!");
static_assert(BITS > (N-1)*log2(10), "Integer is too small!");
crack<N>(0,0);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHVpbnQ2NF90IEludGVnZXI7Cgpjb25zdGV4cHIgSW50ZWdlciBwb3dlcihJbnRlZ2VyIGEsIGludCBuKSB7CglyZXR1cm4gKG4gPT0gMCkgPyAxIDogYSpwb3dlcihhLCBuLTEpOwp9Cgpjb25zdGV4cHIgSW50ZWdlciBwb3dlcjEzWzEwXSA9IHsKCXBvd2VyKDAsMTMpLCBwb3dlcigxLDEzKSwgcG93ZXIoMiwxMyksIHBvd2VyKDMsMTMpLCBwb3dlcig0LDEzKSwKCXBvd2VyKDUsMTMpLCBwb3dlcig2LDEzKSwgcG93ZXIoNywxMyksIHBvd2VyKDgsMTMpLCBwb3dlcig5LDEzKSwKfTsKCnRlbXBsYXRlPHVuc2lnbmVkIEs+IGlubGluZSB2b2lkIGNyYWNrKGNvbnN0IGludCBmcm9tLCBjb25zdCBJbnRlZ2VyIGFjYykgewoJZm9yIChpbnQgbiA9IGZyb207IG4gPCAxMDsgbisrKSB7CgkJY3JhY2s8Sy0xPihuLCBhY2MgKyBwb3dlcjEzW25dKTsKCX0KfQoKdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCBjcmFjazwwPihjb25zdCBpbnQgZnJvbSwgY29uc3QgSW50ZWdlciBhY2MpIHsKCUludGVnZXIgYSA9IGFjYzsKCUludGVnZXIgc3VtID0gMDsKCXdoaWxlIChhICE9IDApIHsKCQlzdW0gKz0gcG93ZXIxM1thJTEwXTsKCQlhIC89IDEwOwoJfQoJaWYgKGFjYyA9PSBzdW0pIHsKCQljb3V0IDw8IGFjYyA8PCBlbmRsOwoJfQp9CgppbnQgbWFpbigpIHsKCWNvbnN0ZXhwciBpbnQgTiA9IDE1OwoJY29uc3RleHByIGludCBCSVRTID0gc2l6ZW9mKEludGVnZXIpKkNIQVJfQklUOwoJc3RhdGljX2Fzc2VydChCSVRTID4gbG9nMihOKSArIDEzKmxvZzIoOSksICJJbnRlZ2VyIGlzIHRvbyBzbWFsbCEiKTsKCXN0YXRpY19hc3NlcnQoQklUUyA+IChOLTEpKmxvZzIoMTApLCAiSW50ZWdlciBpcyB0b28gc21hbGwhIik7CgoJY3JhY2s8Tj4oMCwwKTsKCiAgICByZXR1cm4gMDsKfQ==