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 Rust (1.42.0) (judge verdict: Accepted)

use proconio::input;
use proconio::marker::*;
use proconio::fastout;

#[fastout]
fn main() {
    input! {
    x: i64
    }
    let mut al = vec![(0, 0)];
    let mut a:i64 = 1;
    let mut je:i64 = 1;
    let mut ans = (0, 0);

    while je <= x{
        let a5:i64 = a.pow(5);
        al.push((a, a5));
        al.push((-a, -a5));
        a += 1;
        je = 5 * a.pow(4) - 10 * a.pow(3) + 10 * a.pow(2) - 5 * a + 1;
    }
    al.sort_by_key(|&k| k.0);
    let mut b:i64 = 0;
    while ans == (0,0) {
        let b5:i64 = b.pow(5);
        let rp = x + b5;
        let rm = x - b5;
        match  al.binary_search_by_key(&rp, |&(a, b)| b) {
            Ok(v) => ans = (al[v].0, b),
            Err(_) => (),
        }
        match  al.binary_search_by_key(&rm, |&(a, b)| b) {
            Ok(v) => ans = (al[v].0, -b),
            Err(_) => (),
        }
        b += 1;
    }
    println!("{} {}", ans.0, ans.1)
}