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 OCaml (4.02.3) (judge verdict: Accepted)

open Batteries

let sqrt_int x = int_of_float @@ sqrt @@ float_of_int x

let pow_below n x =
  let rec aux acc  =
    if acc > x then []
    else
      acc :: (aux @@ ( * ) n acc)
  in
  aux n

let lower_than x =
  let num_exp_below =
    let rec aux n =
      if n =1 then
        [1]
      else
        (pow_below n x) @ (aux @@ pred n)
    in
    let num = sqrt_int x in
    List.sort compare @@ aux num in
  num_exp_below

let main () =
  int_of_string @@ input_line stdin
  |> lower_than
  |> List.rev
  |> List.hd
  |> print_int

let () = main ()