#include <iostream>
#include <cmath>
#include <cstdint>
int main() {
std::uint64_t Y = 2017;
for (std::uint64_t A1 = 2; A1 <= Y; A1++) {
for (std::uint64_t B1 = 2; B1 <= Y; B1++) {
if (A1 + B1 > Y) break;
for (std::uint64_t A2 = 2; A2 <= Y; A2++) {
std::uint64_t PA = std::pow(A1, A2);
if (PA > Y) break;
for (std::uint64_t B2 = 2; B2 <= Y; 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;
}
}
}
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RkaW50PgoKaW50IG1haW4oKSB7CgoJc3RkOjp1aW50NjRfdCBZID0gMjAxNzsKCglmb3IgKHN0ZDo6dWludDY0X3QgQTEgPSAyOyBBMSA8PSBZOyBBMSsrKSB7CgkJZm9yIChzdGQ6OnVpbnQ2NF90IEIxID0gMjsgQjEgPD0gWTsgQjErKykgewoJCQlpZiAoQTEgKyBCMSA+IFkpIGJyZWFrOwoJCQlmb3IgKHN0ZDo6dWludDY0X3QgQTIgPSAyOyBBMiA8PSBZOyBBMisrKSB7CgkJCQlzdGQ6OnVpbnQ2NF90IFBBID0gc3RkOjpwb3coQTEsIEEyKTsKCQkJCWlmIChQQSA+IFkpIGJyZWFrOwoJCQkJZm9yIChzdGQ6OnVpbnQ2NF90IEIyID0gMjsgQjIgPD0gWTsgQjIrKykgewoJCQkJCXN0ZDo6dWludDY0X3QgUEIgPSBzdGQ6OnBvdyhCMSwgQjIpOwoJCQkJCWlmIChQQSArIFBCID4gWSkgYnJlYWs7CgkJCQkJaWYgKHN0YXRpY19jYXN0PHN0ZDo6dWludDY0X3Q+KCBQQSArIFBCKT09IFkpIHsKCQkJCQkJc3RkOjpjb3V0IDw8IEExIDw8ICdeJyA8PCBBMiA8PCAnKycgPDwgQjEgPDwgJ14nIDw8IEIyIDw8ICc9JyA8PCBZIDw8IHN0ZDo6ZW5kbDsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9CglyZXR1cm4gMDsKfQ==