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

#include <bits/stdc++.h>
#define rep(i,n) for(int (i)=0;(i)<(n);++(i))
#define all(x) (x).begin(), (x).end()
using namespace std;
using ll = long long;

vector<ll> divisor(ll n) {
    vector<ll> res;
    for (ll i = 1; i * i <= n; ++i) {
        if (n % i == 0 ) {
            res.push_back(i);
            if (n / i != i) res.push_back(n / i);
        }
    }
    sort(all(res));
    return res;
}

ll g(ll a, ll b) {
    return a*a*a*a + a*a*a * b + a*a * b*b + a * b*b*b + b*b*b*b;
}


int main() {
    ll x; cin >> x;

    vector<ll> f = divisor(x);
    vector<ll> d = f;

    rep(i, d.size()) d.push_back(f[i] * (-1));

    ll a, b;
    for (auto e: d) {
        ll s = x / e;

        bool ok = false;

        for (ll i = -1000; i <= 1000; ++i) {
            a = e + i;
            b = i;
            ll t = g(a, b);

            if (s == t) {
                ok = true;
                break;
            }
        }

        if (ok) break;
    }

    cout << a << " " << b << endl;
}