from math import floor,ceil,sqrt

import fractions

import collections

import itertools

from collections import deque

X=int(eval(input()))

"""

l=[]

for i in range(1,ceil(sqrt(X))+1):

    if X%i==0:

        l.append(i)

        l.append(X//i)

l=list(set(l))

l2=l

for i in range(len(l)):

    l2.append(-l[i])

#print(l2)

l2.sort()

if len(l)!=0:

    for i in l2:

        x=X//i

        #print(i,x)

        n=(x-pow(i,4))/(pow(i,2)+1)

        #print(n)

        if (5*pow(i,4)+20*x)>=0:

            if sqrt((5*pow(i,4)+20*x)).is_integer()==True:

                #print(x,i)

                m=int(sqrt((5*pow(i,4)+20*x)))

                if (-5*i*i+m)%10==0:

                    y=(-5*i*i+m)//10

                    #print(i,y)

                    if pow(i,2)+4*y>=0:

                        if sqrt(pow(i,2)+4*y).is_integer()==True:

                            z=int(sqrt(pow(i,2)+4*y))

                            if (-i+z)%2==0:

                                b=(-i+z)//2

                                a=i+b

                                print(a,b)

                                break

                            elif (-i - z) % 2 == 0:

                                b = (-i - z) // 2

                                a = i + b

                                print(a, b)

                                break

                elif (-5*i*i-m)%10==0:

                    y=(-5*i*i+m)//10

                    #print(i,y)

                    if pow(i,2)+4*y>=0:

                        if sqrt(pow(i,2)+4*y).is_integer()==True:

                            z=int(sqrt(pow(i,2)+4*y))

                            if (-i+z)%2==0:

                                b=(-i+z)//2

                                a=i+b

                                print(a,b)

                                break

                            elif (-i - z) % 2 == 0:

                                b = (-i - z) // 2

                                a = i + b

                                print(a, b)

                                break

"""

flag=0

#こんなことしなくても全探査で通る!

for i in range(-1000,1000):

    for j in range(-1000,1000):

        if pow(i,5)-pow(j,5)==X:

            print((i,j))

            flag=1

            break

    if flag==1:

        break

















from math import floor,ceil,sqrt

import fractions

import collections

import itertools

from collections import deque

X=int(eval(input()))

"""

l=[]

for i in range(1,ceil(sqrt(X))+1):

    if X%i==0:

        l.append(i)

        l.append(X//i)

l=list(set(l))

l2=l

for i in range(len(l)):

    l2.append(-l[i])

#print(l2)

l2.sort()

if len(l)!=0:

    for i in l2:

        x=X//i

        #print(i,x)

        n=(x-pow(i,4))/(pow(i,2)+1)

        #print(n)

        if (5*pow(i,4)+20*x)>=0:

            if sqrt((5*pow(i,4)+20*x)).is_integer()==True:

                #print(x,i)

                m=int(sqrt((5*pow(i,4)+20*x)))

                if (-5*i*i+m)%10==0:

                    y=(-5*i*i+m)//10

                    #print(i,y)

                    if pow(i,2)+4*y>=0:

                        if sqrt(pow(i,2)+4*y).is_integer()==True:

                            z=int(sqrt(pow(i,2)+4*y))

                            if (-i+z)%2==0:

                                b=(-i+z)//2

                                a=i+b

                                print(a,b)

                                break

                            elif (-i - z) % 2 == 0:

                                b = (-i - z) // 2

                                a = i + b

                                print(a, b)

                                break

                elif (-5*i*i-m)%10==0:

                    y=(-5*i*i+m)//10

                    #print(i,y)

                    if pow(i,2)+4*y>=0:

                        if sqrt(pow(i,2)+4*y).is_integer()==True:

                            z=int(sqrt(pow(i,2)+4*y))

                            if (-i+z)%2==0:

                                b=(-i+z)//2

                                a=i+b

                                print(a,b)

                                break

                            elif (-i - z) % 2 == 0:

                                b = (-i - z) // 2

                                a = i + b

                                print(a, b)

                                break

"""

flag=0

#こんなことしなくても全探査で通る!

#A>0にて

#A=iの時A^5-B^5の最小は

#i^5-(i-1)^5

#i^5-(i-1)^5が10^9を超えていれば、その範囲の中で全探査すれば、必ず入力の解を持つものに出会えるはず(このiをmaxとする)

#A<=0にて

#A=iの時、A^5ーB^5の最小は

#i^5-(i+1)^5

#i^5-(i+1)^5が10^9を超えていれば、その範囲の中で全探査すれば、必ず入力の解を持つものに出会えるはず(このiをminとする)

i=0

while pow(i+1,5)-pow(i,5)<10**9:        #A>0にて、pow(i+1,5)-pow(i,5)が10^9を超える点を探す

    #print(pow(i+1,5)-pow(i,5))

    i=i+1

ma=i

#print(ma)

i=0

#input()

while pow(i,5)-pow(i-1,5)<10**9:        #A<=0にて、pow(i,5)-pow(i-1,5)が10^9を超える点を探す

    #print(pow(i, 5) - pow(i-1, 5))

    i=i-1

mi=i

#print(ma,mi)

for i in range(mi-2,ma+2):          #余裕を持って、mi-2からma+2の間を

    for j in range(mi-2,ma+2):      #全探査すれば余裕で通るはず

        if pow(i,5)-pow(j,5)==X:

            print((i,j))

            flag=1

            break

    if flag==1:

        break

















from math import floor, ceil, sqrt
import fractions
import collections
import itertools
from collections import deque

X = int(eval(input()))
"""
l=[]
for i in range(1,ceil(sqrt(X))+1):
    if X%i==0:
        l.append(i)
        l.append(X//i)
l=list(set(l))
l2=l
for i in range(len(l)):
    l2.append(-l[i])
#print(l2)
l2.sort()
if len(l)!=0:
    for i in l2:
        x=X//i
        #print(i,x)
        n=(x-pow(i,4))/(pow(i,2)+1)
        #print(n)
        if (5*pow(i,4)+20*x)>=0:
            if sqrt((5*pow(i,4)+20*x)).is_integer()==True:
                #print(x,i)
                m=int(sqrt((5*pow(i,4)+20*x)))
                if (-5*i*i+m)%10==0:
                    y=(-5*i*i+m)//10
                    #print(i,y)
                    if pow(i,2)+4*y>=0:
                        if sqrt(pow(i,2)+4*y).is_integer()==True:
                            z=int(sqrt(pow(i,2)+4*y))
                            if (-i+z)%2==0:
                                b=(-i+z)//2
                                a=i+b
                                print(a,b)
                                break
                            elif (-i - z) % 2 == 0:
                                b = (-i - z) // 2
                                a = i + b
                                print(a, b)
                                break
                elif (-5*i*i-m)%10==0:
                    y=(-5*i*i+m)//10
                    #print(i,y)
                    if pow(i,2)+4*y>=0:
                        if sqrt(pow(i,2)+4*y).is_integer()==True:
                            z=int(sqrt(pow(i,2)+4*y))
                            if (-i+z)%2==0:
                                b=(-i+z)//2
                                a=i+b
                                print(a,b)
                                break
                            elif (-i - z) % 2 == 0:
                                b = (-i - z) // 2
                                a = i + b
                                print(a, b)
                                break
"""
flag = 0
# こんなことしなくても全探査で通る!
for i in range(-1000, 1000):
    for j in range(-1000, 1000):
        if pow(i, 5) - pow(j, 5) == X:
            print((i, j))
            flag = 1
            break
    if flag == 1:
        break

from math import floor, ceil, sqrt
import fractions
import collections
import itertools
from collections import deque

X = int(eval(input()))
"""
l=[]
for i in range(1,ceil(sqrt(X))+1):
    if X%i==0:
        l.append(i)
        l.append(X//i)
l=list(set(l))
l2=l
for i in range(len(l)):
    l2.append(-l[i])
#print(l2)
l2.sort()
if len(l)!=0:
    for i in l2:
        x=X//i
        #print(i,x)
        n=(x-pow(i,4))/(pow(i,2)+1)
        #print(n)
        if (5*pow(i,4)+20*x)>=0:
            if sqrt((5*pow(i,4)+20*x)).is_integer()==True:
                #print(x,i)
                m=int(sqrt((5*pow(i,4)+20*x)))
                if (-5*i*i+m)%10==0:
                    y=(-5*i*i+m)//10
                    #print(i,y)
                    if pow(i,2)+4*y>=0:
                        if sqrt(pow(i,2)+4*y).is_integer()==True:
                            z=int(sqrt(pow(i,2)+4*y))
                            if (-i+z)%2==0:
                                b=(-i+z)//2
                                a=i+b
                                print(a,b)
                                break
                            elif (-i - z) % 2 == 0:
                                b = (-i - z) // 2
                                a = i + b
                                print(a, b)
                                break
                elif (-5*i*i-m)%10==0:
                    y=(-5*i*i+m)//10
                    #print(i,y)
                    if pow(i,2)+4*y>=0:
                        if sqrt(pow(i,2)+4*y).is_integer()==True:
                            z=int(sqrt(pow(i,2)+4*y))
                            if (-i+z)%2==0:
                                b=(-i+z)//2
                                a=i+b
                                print(a,b)
                                break
                            elif (-i - z) % 2 == 0:
                                b = (-i - z) // 2
                                a = i + b
                                print(a, b)
                                break
"""
flag = 0
# こんなことしなくても全探査で通る!
# A>0にて
# A=iの時A^5-B^5の最小は
# i^5-(i-1)^5
# i^5-(i-1)^5が10^9を超えていれば、その範囲の中で全探査すれば、必ず入力の解を持つものに出会えるはず(このiをmaxとする)
# A<=0にて
# A=iの時、A^5ーB^5の最小は
# i^5-(i+1)^5
# i^5-(i+1)^5が10^9を超えていれば、その範囲の中で全探査すれば、必ず入力の解を持つものに出会えるはず(このiをminとする)
i = 0
while pow(i + 1, 5) - pow(i, 5) < 10**9:  # A>0にて、pow(i+1,5)-pow(i,5)が10^9を超える点を探す
    # print(pow(i+1,5)-pow(i,5))
    i = i + 1
ma = i
# print(ma)
i = 0
# input()
while pow(i, 5) - pow(i - 1, 5) < 10**9:  # A<=0にて、pow(i,5)-pow(i-1,5)が10^9を超える点を探す
    # print(pow(i, 5) - pow(i-1, 5))
    i = i - 1
mi = i
# print(ma,mi)
for i in range(mi - 2, ma + 2):  # 余裕を持って、mi-2からma+2の間を
    for j in range(mi - 2, ma + 2):  # 全探査すれば余裕で通るはず
        if pow(i, 5) - pow(j, 5) == X:
            print((i, j))
            flag = 1
            break
    if flag == 1:
        break

-for i in range(-1000, 1000): -    for j in range(-1000, 1000): +# A>0にて +# A=iの時A^5-B^5の最小は +# i^5-(i-1)^5 +# i^5-(i-1)^5が10^9を超えていれば、その範囲の中で全探査すれば、必ず入力の解を持つものに出会えるはず(このiをmaxとする) +# A<=0にて +# A=iの時、A^5ーB^5の最小は +# i^5-(i+1)^5 +# i^5-(i+1)^5が10^9を超えていれば、その範囲の中で全探査すれば、必ず入力の解を持つものに出会えるはず(このiをminとする) +i = 0 +while pow(i + 1, 5) - pow(i, 5) < 10**9:  # A>0にて、pow(i+1,5)-pow(i,5)が10^9を超える点を探す +    # print(pow(i+1,5)-pow(i,5)) +    i = i + 1 +ma = i +# print(ma) +i = 0 +# input() +while pow(i, 5) - pow(i - 1, 5) < 10**9:  # A<=0にて、pow(i,5)-pow(i-1,5)が10^9を超える点を探す +    # print(pow(i, 5) - pow(i-1, 5)) +    i = i - 1 +mi = i +# print(ma,mi) +for i in range(mi - 2, ma + 2):  # 余裕を持って、mi-2からma+2の間を +    for j in range(mi - 2, ma + 2):  # 全探査すれば余裕で通るはず