#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#define bit(x,i) (x&(1<<i))  //select the bit of position i of x
#define lowbit(x) ((x)&((x)^((x)-1))) //get the lowest bit of x
#define hBit(msb,n) asm("bsrl %1,%0" : "=r"(msb) : "r"(n)) //get the highest bit of x, maybe the fastest
#define max(a,b) (a<b?b:a)
#define abs(x) (x<0?(-x):x) // big bug here if "-x" is not surrounded by "()"
#define IN(i,l,r) (l<i&&i<r) //the next for are for checking bound
#define LINR(i,l,r) (l<=i&&i<=r)
#define LIN(i,l,r) (l<=i&&i<r)
#define INR(i,l,r) (l<i&&i<=r)
#define F(i,L,R) for (int i = L; i < R; i++) //next four are for "for loops"
#define FE(i,L,R) for (int i = L; i <= R; i++)
#define FF(i,L,R) for (int i = L; i > R; i--)
#define FFE(i,L,R) for (int i = L; i >= R; i--)
#define getI(a) scanf("%d", &a) //next three are handy ways to get ints, it's also force you to use '&' sign
#define getII(a,b) scanf("%d%d", &a, &b)
#define getIII(a,b,c) scanf("%d%d%d", &a, &b, &c)
#define wez(n) int (n); scanf("%d",&(n)) //handy if the input is right after the definition of a variable
#define wez2(n,m) int (n),(m); scanf("%d %d",&(n),&(m))
#define wez3(n,m,k) int (n),(m),(k); scanf("%d %d %d",&(n),&(m),&(k))
#define TESTS wez(testow)while(testow--) //for multilple cases problems
#define whileZ int T; getI(T); while(T--) // the same as above
#define getS(x) scanf("%s", x) //get a char* string
#define clr(a,x) memset(a,x,sizeof(a)) //set elements of array to some value
#define char2Int(c) (c-'0')
#define lastEle(vec) vec[vec.size()-1] 
#define SZ(x) ((int)((x).size()))
#define REMAX(a,b) (a)=max((a),(b)) // set a to the maximum of a and b
#define REMIN(a,b) (a)=min((a),(b));
#define FOREACH(i,t) for (typeof(t.begin()) i=t.begin(); i!=t.end(); i++) // raverse an STL data structure
#define ALL(c) (c).begin(),(c).end() //handy for function like "sort()"
#define PRESENT(c,x) ((c).find(x) != (c).end()) 
#define CPRESENT(c,x) (find(ALL(c),x) != (c).end()) 
#define ll long long //data types used often, but you don't want to type them time by time
#define ull unsigned long long
#define ui unsigned int
#define us unsigned short
#define IOS ios_base::sync_with_stdio(0); //to synchronize the input of cin and scanf
#define INF 1001001001
#define PI 3.1415926535897932384626
//for map, pair
#define mp make_pair
#define fi first
#define se second
// for debug

inline void pisz(int n) { printf("%d\n",n); }
#define DBG(vari) cerr<<#vari<<" = "<<(vari)<<endl;
// #define printA(a,L,R) FE(i,L,R) cout << a[i] << (i==R?'\n':' ')
// #define printV(a) printA(a,0,a.size()-1)
#define MAXN 10000
//for vectors
#define pb push_back
typedef int elem_t;
typedef long long int lli;
typedef vector<int> vi; 
typedef vector<lli> vlli; 
typedef vector<vi> vvi; 
typedef pair<int,int> ii;
template <typename T>
void printV(T vec){
    
    for (auto x:vec){
        cout<<x<<" ";
    }
    cout<<"\n";
}
template <typename T>
void printA(T arr[],int beg, int end){
    
    for (int i=beg;i<end;i++){
        cout<<arr[i]<<" ";
    }
    cout<<"\n";
}

void print(string a , char end='\n' ){
    cout<<a<<end;
}
void print(lli a , char end='\n' ){
    cout<<a<<end;
}
template <typename T>
void print(vector<T> vectorList,char end='\n'){
    for (auto data: vectorList){
        cout<<data<<" ";
    }
    cout<<end;
}

template <typename T>
void print(T array,int beg,int last,char end='\n'){
    lli i=(lli)beg;
    lli finish=(lli)(last);
    while(i<finish){
        cout<<*array<<" ";
        array++;
        i++;
    }
    cout<<end;
}

// template <typename T>
vector<lli> getinput(lli n,int indexing=0){
    lli i=0;
    vector<lli> v;
    for(int j=0;j<indexing;j++){
        v.pb(-1);
    }
    while(i<n){
        lli a;
        cin>>a;
        v.pb(a);
        i++;
    }
    return v;
}
int power(int x, unsigned int y, int p)  
{  
    int res = 1;
    x = x % p;  
   
    if (x == 0) return 0;  
  
    while (y > 0)  
    {  
          
        if (y & 1)  
            res = (res*x) % p;  
  
        y = y>>1; // y = y/2  
        x = (x*x) % p;  
    }  
    return res;  
}  
int main(){
    lli x;
    cin>>x;
    bool notFound=true;
    lli a,b;
    
    lli i=-200;
    while(i<=200 and notFound){
        lli j=-200;
        while(j<=200 and notFound){
            if((pow(i,5)-pow(j,5))==x){
                notFound=false;
                a=i;b=j;
            }
            j+=1;
        }
        i+=1;
    }
    cout<<a<<" "<<b;
    
    return 0;
}

Measured memory_bytes: 4056