import java.util.*;
public class Main {
static int nthRoot(int n, int m) {
int lo = 1, hi = m;
while (lo <= hi) {
int mid = (lo + hi) / 2;
long val = 1;
for (int i = 0; i < n; i++) {
val *= mid;
if (val > m) break;
}
if (val == m) return mid;
if (val < m) lo = mid + 1;
else hi = mid - 1;
}
return -1;
}
public static void main
(String[] args
) { int n = 3;
int m = 27;
int res = nthRoot(n, m);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewoKICAgIHN0YXRpYyBpbnQgbnRoUm9vdChpbnQgbiwgaW50IG0pIHsKICAgICAgICBpbnQgbG8gPSAxLCBoaSA9IG07CgogICAgICAgIHdoaWxlIChsbyA8PSBoaSkgewogICAgICAgICAgICBpbnQgbWlkID0gKGxvICsgaGkpIC8gMjsKCiAgICAgICAgICAgIGxvbmcgdmFsID0gMTsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhbCAqPSBtaWQ7CiAgICAgICAgICAgICAgICBpZiAodmFsID4gbSkgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh2YWwgPT0gbSkgcmV0dXJuIG1pZDsKCiAgICAgICAgICAgIGlmICh2YWwgPCBtKSBsbyA9IG1pZCArIDE7CiAgICAgICAgICAgIGVsc2UgaGkgPSBtaWQgLSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBpbnQgbiA9IDM7CiAgICAgICAgaW50IG0gPSAyNzsKCiAgICAgICAgaW50IHJlcyA9IG50aFJvb3QobiwgbSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlcyk7CiAgICB9Cn0K