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: Runtime Error)

    #!/usr/bin/env python3
    import sys

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

    def lef(a, b):
        return a*a*a*a + a*a*a*b + a*a*b*b + a*b*b*b + b*b*b*b

    def solve(X: int):
        divs = make_divisors(X)
        for d in divs:
            base = 0
            upper = X // d
            while(lef(base+d,base) < upper):
                base+=1
            if lef(base+d,base) == upper:
                print(base+d,base)
                return

            base = -d//2-1
            while(lef(base+d,base) < upper) and (base > 0):
                base -= 1
            if lef(base+d, base) == upper:
                print(base+d, base)
                return

            base = -d
            while(lef(base+d,base) < upper) and (base < -d):
                base += 1
            if lef(base+d, base) == upper:
                print(base+d, base)
                return

            base = -d
            while(lef(base+d,base) < upper):
                base -= 1
            if lef(base+d, base) == upper:
                print(base+d, base)
                return
        raise
        return


    # Generated by 1.1.6 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
    def main():
        def iterate_tokens():
            for line in sys.stdin:
                for word in line.split():
                    yield word
        tokens = iterate_tokens()
        X = int(next(tokens))  # type: int
        solve(X)

    if __name__ == '__main__':
        main()