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: Time Limit Exceeded)

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define sz(s) (int)(s.size())
#define all(v) v.begin(),v.end()
#define endl "\n"
using namespace std;
ll gcd(ll x, ll y) { return (!y) ? x : gcd(y, x % y); }
void Run() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    // freopen("mex.in", "r", stdin);
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin); freopen("outt.txt", "w", stdout);
#endif
}
const int N = 1e5 + 10;
int f[N];
int e[N];
inline ll pp(ll a)
{
    ll start = -500, end = a, mid;
    while (start <= end)
    {
       
        mid = (start + end) / 2;
        if (mid * mid * mid * mid * mid == a)
            return mid;
        else if (mid * mid * mid * mid * mid > a)
        {
            end = mid - 1;
        }
        else if (mid * mid * mid * mid * mid < a)
        {
            start = mid + 1;
        }
    }
}
int main()
{
    Run();
    int n; cin >> n;
    for (int i = -500; i <= 500; i++)
    {
        ll a = pow(i, 5) - n;
        ll b = pp(a);
        if (pow(i, 5) - pow(b, 5) == n)
        {
            cout << i << " " << b;
            return 0;
        }
        
    }
}