import java.util.*;
import java.util.Map.Entry;
class Ideone
{
public static void main
(String[] args
) {
long[] q = { 2017, 20017, 200017, 2000017, 20000017, 2000000017 };
for (long i : q)
hage(i);
}
private static void hage(long n)
{
TreeMap
<Long, List
<String
>> map
= new TreeMap
<>(); for (int i
= 2, j
= (int) Math.
sqrt(n
); i
<= j
; i
++) {
for (long l = i * i, p = 2; l <= n; l *= i, p++)
{
map.
compute(l,
(k, v
) -> v
== null ? new ArrayList() : v
).
add(i
+ "^" + p
); }
}
boolean f = false;
for (Entry
<Long, List
<String
>> entry
: map.
entrySet()) {
if (!map.containsKey(n - entry.getKey())) continue;
for (String a
: entry.
getValue()) {
for (String b
: map.
get(n
- entry.
getKey())) {
System.
out.
printf("%s+%s=%d%n", a, b, n
); f = true;
}
}
}
System.
out.
println(f
? "" : "o^o+o^o= " + n
+ " is nothing\n"); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKCmNsYXNzIElkZW9uZQp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIGxvbmdbXSBxID0geyAyMDE3LCAyMDAxNywgMjAwMDE3LCAyMDAwMDE3LCAyMDAwMDAxNywgMjAwMDAwMDAxNyB9OwogICAgICAgIGZvciAobG9uZyBpIDogcSkKICAgICAgICAgICAgaGFnZShpKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGhhZ2UobG9uZyBuKQogICAgewogICAgICAgIFRyZWVNYXA8TG9uZywgTGlzdDxTdHJpbmc+PiBtYXAgPSBuZXcgVHJlZU1hcDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDIsIGogPSAoaW50KSBNYXRoLnNxcnQobik7IGkgPD0gajsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChsb25nIGwgPSBpICogaSwgcCA9IDI7IGwgPD0gbjsgbCAqPSBpLCBwKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1hcC5jb21wdXRlKGwsIChrLCB2KSAtPiB2ID09IG51bGwgPyBuZXcgQXJyYXlMaXN0KCkgOiB2KS5hZGQoaSArICJeIiArIHApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBib29sZWFuIGYgPSBmYWxzZTsKICAgICAgICBmb3IgKEVudHJ5PExvbmcsIExpc3Q8U3RyaW5nPj4gZW50cnkgOiBtYXAuZW50cnlTZXQoKSkKICAgICAgICB7CiAgICAgICAgICAgIGlmICghbWFwLmNvbnRhaW5zS2V5KG4gLSBlbnRyeS5nZXRLZXkoKSkpIGNvbnRpbnVlOwogICAgICAgICAgICBmb3IgKFN0cmluZyBhIDogZW50cnkuZ2V0VmFsdWUoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgYiA6IG1hcC5nZXQobiAtIGVudHJ5LmdldEtleSgpKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJXMrJXM9JWQlbiIsIGEsIGIsIG4pOwogICAgICAgICAgICAgICAgICAgIGYgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZiA/ICIiIDogIm9ebytvXm89ICIgKyBuICsgIiBpcyBub3RoaW5nXG4iKTsKICAgIH0KfQo=