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 C++ (GCC 9.2.1) (judge verdict: Accepted)

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;


typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
int chosen[100] = {0} ;
int n ;
vector<int> permutation;
void search() {
if (permutation.size() == n) {
// process permutation
    for (int i = 0; i < n; i++) 
        {
            cout << permutation[i] << " ";
        }
        cout << endl ;
} else {
for (int i = 0; i < n; i++) {
if (chosen[i]) continue;
chosen[i] = true;
permutation.push_back(i);
search();
chosen[i] = false;
permutation.pop_back();
}
}
}
int main()
{
    long long a , b , x , p = 0 , q = 0 , i , j , flag = 0 ;
    cin >> x ;
    for(i = 0 ; i < 128 ; i++)
    {
        if(flag == 1)
        {
            break ;
        }
        for(j = -127 ; j < 128 ; j++)
        {
            long long y ;
            // j = -2 ;
            a = i*i*i*i*i ;
            b = j*j*j*j*j ;
            y = a - b ;
            y = x - y ;
            if( y == 0 )
            {
                p = i ;
                q = j ;
                flag = 1 ;
                break ;
            }
        }
    }
    cout << p << " " << q << endl ;
}