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 Go (1.14.1) (judge verdict: Time Limit Exceeded)

package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
	"strconv"
)

var scanner = bufio.NewScanner(os.Stdin)

func main() {
	scanner.Split(bufio.ScanWords)
	x := nextInt()

LABEL:
	for i := 1; i <= x; i++ {
		n := float64(x) / float64(i)
		m := float64(x) / float64(n)
		if !isInt(n) || !isInt(m) {
			continue
		}
		for i := 0; i <= int(n); i++ {
			a := float64(i)
			b := a - n
			r := math.Pow(a, 4) + math.Pow(a, 3)*b + math.Pow(a, 2)*math.Pow(b, 2) + a*math.Pow(b, 3) + math.Pow(b, 4)

			if r == m {
				fmt.Println(a, b)
				break LABEL
			}
		}
	}
}

func next() string {
	scanner.Scan()
	return scanner.Text()
}

func nextInt() int {
	i, err := strconv.Atoi(next())
	if err != nil {
		fmt.Println(err)
	}
	return i
}

func isInt(n float64) bool {
	return math.Floor(n) == n
}

func minMax(n, m int) (int, int) {
	if n <= m {
		return n, m
	}
	return m, n
}