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: Accepted)

using System;
using System.Collections.Generic;

namespace cswork {
    class Program {
        static void Main (string[] args) {
            // Contest166.Q4 ();

            long x = ReadInt ();

            bool hasDetect = false;
            for (int a = 0; !hasDetect; a++) {

                bool minusFlag = true;

                for (int b = 0; !hasDetect; b++) {
                    if (minusFlag) {
                        long ans1 = (long) Math.Pow (a, 5) - (long) Math.Pow (b, 5);

                        if (ans1 < 0) {
                            minusFlag = false;
                        }

                        if (ans1 == x) {
                            Write (a + " " + b);
                            hasDetect = true;
                        }
                    }

                    long ans2 = (long) Math.Pow (a, 5) - (long) Math.Pow (-b, 5);

                    if (ans2 == x) {
                        Write (a + " " + (-b));
                        hasDetect = true;
                    }

                    if (ans2 > x && !minusFlag) {
                        break;
                    }
                }
            }
            Exit ();
        }

        public static void Write (string str) {
            Console.WriteLine (str);
        }

        public static void Write (int i) {
            Console.WriteLine (i);
        }

        public static void Write (double d) {
            Console.WriteLine (d);
        }

        public static string Read () {
            return Console.ReadLine ();
        }

        public static int ReadInt () {
            return int.Parse (Console.ReadLine ());
        }

        public static long ReadLong () {
            return long.Parse (Console.ReadLine ());
        }

        public static double ReadDouble () {
            return double.Parse (Console.ReadLine ());
        }

        public static void Exit () { }

        public static List<string> GetList (string str, string delim) {
            return new List<string> (str.Split (delim));
        }

        public static List<int> GetListInt (string str, string delim) {
            List<string> list = new List<string> (str.Split (delim));
            return list.ConvertAll (x => int.Parse (x));
        }
    }
}