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 C# (.NET Core 3.1.201) (judge verdict: Wrong Answer)

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Text;


class Program
{
    static void Main(string[] args)
    {
        // 入力
        //var s = Console.ReadLine();
        long n = long.Parse(Console.ReadLine());
        //long[] n = Console.ReadLine().Split().Select(long.Parse).ToArray();

        long a = 0;
        var dic = new Dictionary<long, long>();
        while (a < 100)
        {
            dic.Add(a * a * a * a * a, a);
            if (!dic.ContainsKey(a * a * a * a * a * -1))
            {
                dic.Add(a * a * a * a * a * -1, a * -1);
            }
            a++;
        }

        long ansa = 0;
        long ansb = 0;
        for (long i = 0; i < dic.Count / 2; i++)
        {

            var tmp = i * i * i * i * i - n;
            if (dic.ContainsKey(tmp))
            {
                ansa = i;
                ansb = dic[tmp];
                break;
            }

            tmp = i * i * i * i * i * -1 - n;
            if (dic.ContainsKey(tmp))
            {
                ansa = i * -1;
                ansb = dic[tmp];
                break;
            }

            tmp = i * i * i * i * i + n;
            if (dic.ContainsKey(tmp))
            {
                ansa = i;
                ansb = dic[tmp];
                break;
            }

            tmp = i * i * i * i * i * -1 + n;
            if (dic.ContainsKey(tmp))
            {
                ansa = i * -1;
                ansb = dic[tmp];
                break;
            }
        }

        // 出力
        Console.WriteLine("{0} {1}", ansa, ansb);
    }
}