Problem:
Score : 200 points

Problem Statement

You are given a positive integer X.
Find the largest perfect power that is at most X.
Here, a perfect power is an integer that can be represented as b^p, where b is an integer not less than 1 and p is an integer not less than 2.

Constraints

1 ≤ X ≤ 1000

X is an integer.

Input

Input is given from Standard Input in the following format:

X

Output

Print the largest perfect power that is at most X.

Sample Input 1

10

Sample Output 1

9

There are four perfect powers that are at most 10: 1, 4, 8 and 9.
We should print the largest among them, 9.

Sample Input 2

1

Sample Output 2

1

Sample Input 3

999

Sample Output 3

961

Solution in Haskell (GHC 7.10.3) (judge verdict: Accepted)

import Control.Monad
import Text.Printf
import Control.Applicative
import Data.List as L

getInts :: IO [Int]
getInts = map read . words <$> getLine

main :: IO()
main = do
  [x] <- getInts
  let a = [2^y | y <- [2..9]]
      b = [y^2 | y <- [1..31]]
      c = [y^3 | y <- [1..10]]
      d = [y^4 | y <- [1..5]]
      e = [y^5 | y <- [1..3]]
      f = [y^6 | y <- [1..3]]
  printf "%d" $ head $dropWhile (> x) $ sortBy (flip compare) (concat [a, b, c, d, e, f])