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 Kotlin (1.3.71) (judge verdict: Wrong Answer)

import java.io.PrintWriter

fun main(args: Array<String>) {
    PrintWriter(System.out).use { out ->
        solve(out)
        out.flush()
    }
}

fun solve(out: PrintWriter) {
    val x = readLong()

    val list = mutableListOf<Pair<Long, Long>>()
    var i = 1L
    while (true) {
        val tmp = pow(i, 5)
        if (tmp > x) {
            break
        }

        list += Pair(i, tmp)
        i++
    }

    val tmpList = list.map { Pair(-it.first, -it.second) } + Pair(0L, 0L) + list
    var ansA = 0L
    var ansB = 0L
    for (a in tmpList) {
        for (b in tmpList) {
            if (a.second - b.second == x) {
                ansA = a.first
                ansB = b.first
                break
            }
        }
    }

    println("$ansA $ansB")
}

/** O(log(m)) */
fun pow(n: Long, m: Long, MOD: Long = (1L shl 31)): Long = n * n * n * n * n

fun readInteger() = readLine()!!.toInt()
fun readLong() = readLine()!!.toLong()
fun readStringList() = readLine()!!.split(" ")
fun readIntegerList() = readStringList().map(String::toInt)
fun readLongList() = readStringList().map(String::toLong)
fun readDoubleList() = readStringList().map(String::toDouble)