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.*;

public class Main {
	static Long[] powI = new Long[121];
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);

		Long X = sc.nextLong();
		boolean odd = false;
		if(X%2==1){
			odd = true;
		}
		Long a = (long) 1;

		for(int i=0; i<121; i++){
			powI[i]= (long) 0;
		}

		while(true){
			if(X%a==0){
				int ans = calc(X,a);
				if(ans!=0){
					System.out.println((ans+a) + " " + ans);
					return;
				}
			}
			if(odd){
				a += 2;
			}else{
				a++;
			}
		}
	}

	public static int calc(Long target, Long a){

		int b = 1;

		while(true){
			Long A = (long) 0;
          	if((b<120)){
              if(powI[b]==0){
                  A = (long) Math.pow(b,5);
                  powI[b]=A;
              }else{
                  A=powI[b];
              }
            }else{
              A = (long) Math.pow(b,5);
            }
			Long B = (long) Math.pow(a+b,5);
			boolean bl = false;
			if(B-A>target){
				bl = true;
			}
			if(B-A==target){
				return b;
			}

			B = (long) Math.pow(a-b,5);
			if(bl&&(B+A>target)){
				return 0;
			}
			if(B+A==target){
				return -b;
			}
			
			b++;
		}
	}
}