Problem:
Score : 400 points

Problem Statement

Give a pair of integers (A, B) such that A^5-B^5 = X.
It is guaranteed that there exists such a pair for the given integer X.

Constraints

1 \leq X \leq 10^9

X is an integer.

There exists a pair of integers (A, B) satisfying the condition in Problem Statement.

Input

Input is given from Standard Input in the following format:

X

Output

Print A and B, with space in between.
If there are multiple pairs of integers (A, B) satisfying the condition, you may print any of them.

A B

Sample Input 1

33

Sample Output 1

2 -1

For A=2 and B=-1, A^5-B^5 = 33.

Sample Input 2

1

Sample Output 2

0 -1

Solution in PyPy3 (7.3.0) (judge verdict: Accepted)

from collections import deque
from functools import lru_cache

def make_divisors(n):
    divisors = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divisors.append((i, n//i))

    # divisors.sort()
    return divisors

#gはaと-bが近いときに最小？？
@lru_cache(maxsize=None)
def g(a, b):
    return a**4 + a**3*b + a**2*b**2 + a*b**3 + b**4

def check(s, t):
    #a > b
    a = s//2
    b = a - s
    q = deque()
    q.append((a,b))
    q.append((a+1,b+1))
    q.append((a-1,b-1))
    while True:
        (a, b) = q.popleft()
        if g(a, b) == t:
            print(f'{a} {b}')
            exit()
        elif g(a, b) < t:
            #print(f'inner{s}: {a}, {b} -> {g(a,b)} < {t}')
            if a > s//2:
                q.append((a+1, b+1))
            elif a < s//2:
                q.append((a-1, b-1))
            else:
                pass
        else:
            #print(f'outer{s}: {a}, {b} -> {g(a,b)} > {t}')
            return

def main():
    X = int(input())
    factor = make_divisors(X)
    #print(factor)
    for s, t in factor:
        check(s, t)
        check(t, s)

if __name__ == "__main__":
    main()