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: Wrong Answer)

use std::io;
use std::str::FromStr;

fn input<T:FromStr>() -> T {
    let mut line: String = String::new();
    io::stdin().read_line(&mut line);
    line.trim().parse().ok().unwrap()
}

fn divisors(n: i64) -> Vec<i64> {
    let mut divisors: Vec<i64> = Vec::new();
    for i in 1..(n+1) {
        if i * i > n {
            break;
        }
        if n % i == 0 {
            divisors.push(i);
            // if i * i != n {
            //     divisors.push(n / i);
            // }
        }
    }
    divisors
}

fn limit(n: i64) -> i64 {
    for i in 0..(n+1) {
       if i * i * i* i * i >= n {
           if i * i * i* i * i == n {
               return i;
           } else {
            return i-1;
           }
        }
    }
    0
}

fn main() {
    let x: i64 = input();
    let divisors = divisors(x);
    let limit = limit(x);
    for i in -limit..limit {
        for j in -limit..limit {
            if i * i * i* i * i - j * j * j * j * j == x {
                println!("{} {}", i, j);
                return;
            }
        }
    }
}