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 Java (OpenJDK 11.0.6) (judge verdict: Time Limit Exceeded)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long x = Long.parseLong(sc.next());
		// A^5=X+B^5
		for (int i = 0;; i++) {
			// X+B^5の部分を仮で出す
			long rs = (long) Math.pow(i, 5);
			long pow5b = rs - x; // b^5の値
			if (isInteger(pow5b)) { // pow5bが整数の5乗のとき
				long b = (long) calc5root(pow5b);
				long a = (long) calc5root(rs);
				print(a, b);
				break;
			}

			// iを負に反転させて計算
			rs = (long) Math.pow(-i, 5);
			pow5b = rs - x;
			if (isInteger(pow5b)) { // pow5bが整数の5乗のとき
				long b = (long) calc5root(pow5b);
				long a = (long) calc5root(rs);
				print(a, b);
				break;
			}
		}

	}

	private static void print(long a, long b) {
		System.out.println(a + " " + b);

	}

	private static boolean isInteger(long pow5b) {
		// 整数かどうか
		double root = calc5root(pow5b);
		return root == (long) root;
	}

	private static double calc5root(long base) {
		// 5乗根を計算
		if (base > 0) {
			return Math.pow(base, 1.0 / 5.0);
		} else {
			return -Math.pow(-base, 1.0 / 5.0);
		}

	}

}