#include <iostream>
#include <cmath>
#include <cstdint>
std::uint64_t MakeMaxPow(std::uint64_t Y) {
std::uint64_t S = 0;
for (std::uint64_t i = 0; i < 64; i++) {
if ((1ull << i) >= Y) return i;
}
return 0xdeadbeef;
}
bool MakeHoge(std::uint64_t Y) {
bool F = false;
std::uint64_t L = std::sqrt(Y)+1;
std::uint64_t L2 = MakeMaxPow(Y);
for (std::uint64_t A1 = 2; A1 <= L; A1++) {
for (std::uint64_t B1 = 2; B1 <= L; B1++) {
if (A1 + B1 > Y) break;
for (std::uint64_t A2 = 2; A2 <= L2; A2++) {
std::uint64_t PA = std::pow(A1, A2);
if (PA > Y) break;
for (std::uint64_t B2 = 2; B2 <= L2; B2++) {
std::uint64_t PB = std::pow(B1, B2);
if (PA + PB > Y) break;
if (static_cast<std::uint64_t>(PA + PB) == Y) {
std::cout << A1 << '^' << A2 << '+' << B1 << '^' << B2 << '=' << Y << std::endl;
F = true;
}
}
}
}
}
if (!F) std::cout << "Can't Find the "<< Y << std::endl;
return F;
}
int main() {
MakeHoge(2017);
MakeHoge(20017);
MakeHoge(200017);
MakeHoge(2000017);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RkaW50PgoKc3RkOjp1aW50NjRfdCBNYWtlTWF4UG93KHN0ZDo6dWludDY0X3QgWSkgewoJc3RkOjp1aW50NjRfdCBTID0gMDsKCglmb3IgKHN0ZDo6dWludDY0X3QgaSA9IDA7IGkgPCA2NDsgaSsrKSB7CgkJaWYgKCgxdWxsIDw8IGkpID49IFkpIHJldHVybiBpOwoJfQoKCXJldHVybiAweGRlYWRiZWVmOwp9Cgpib29sIE1ha2VIb2dlKHN0ZDo6dWludDY0X3QgWSkgewoJYm9vbCBGID0gZmFsc2U7CglzdGQ6OnVpbnQ2NF90IEwgPSBzdGQ6OnNxcnQoWSkrMTsKCXN0ZDo6dWludDY0X3QgTDIgPSBNYWtlTWF4UG93KFkpOwoJZm9yIChzdGQ6OnVpbnQ2NF90IEExID0gMjsgQTEgPD0gTDsgQTErKykgewoJCWZvciAoc3RkOjp1aW50NjRfdCBCMSA9IDI7IEIxIDw9IEw7IEIxKyspIHsKCQkJaWYgKEExICsgQjEgPiBZKSBicmVhazsKCQkJZm9yIChzdGQ6OnVpbnQ2NF90IEEyID0gMjsgQTIgPD0gTDI7IEEyKyspIHsKCQkJCXN0ZDo6dWludDY0X3QgUEEgPSBzdGQ6OnBvdyhBMSwgQTIpOwoJCQkJaWYgKFBBID4gWSkgYnJlYWs7CgkJCQlmb3IgKHN0ZDo6dWludDY0X3QgQjIgPSAyOyBCMiA8PSBMMjsgQjIrKykgewoJCQkJCXN0ZDo6dWludDY0X3QgUEIgPSBzdGQ6OnBvdyhCMSwgQjIpOwoJCQkJCWlmIChQQSArIFBCID4gWSkgYnJlYWs7CgkJCQkJaWYgKHN0YXRpY19jYXN0PHN0ZDo6dWludDY0X3Q+KFBBICsgUEIpID09IFkpIHsKCQkJCQkJc3RkOjpjb3V0IDw8IEExIDw8ICdeJyA8PCBBMiA8PCAnKycgPDwgQjEgPDwgJ14nIDw8IEIyIDw8ICc9JyA8PCBZIDw8IHN0ZDo6ZW5kbDsKCQkJCQkJRiA9IHRydWU7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoJaWYgKCFGKSBzdGQ6OmNvdXQgPDwgIkNhbid0IEZpbmQgdGhlICI8PCBZIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiBGOwp9CgppbnQgbWFpbigpIHsKCU1ha2VIb2dlKDIwMTcpOwoJTWFrZUhvZ2UoMjAwMTcpOwoJTWFrZUhvZ2UoMjAwMDE3KTsKCU1ha2VIb2dlKDIwMDAwMTcpOwoKCglyZXR1cm4gMDsKfQ==