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 Rust (1.15.1) (judge verdict: Accepted)

use std::io;

fn procon_read<T: std::str::FromStr>() ->  Vec<T> {
	let mut buf = String::new();
	io::stdin().read_line(&mut buf).expect("");
	let iter = buf.split_whitespace();
	let mut v: Vec<T> = Vec::new();
	for i in iter {
		v.push(i.parse().ok().unwrap());
	}
	v
}

fn main() {
	let v:Vec<i32> = procon_read();
	let x = v[0];
	let mut a:Vec<i32> = Vec::new();
	let mut maxi = 1;
	a.push(1);
	a.push(1);
	for i in 2..x {
		for j in 2.. {
			if i.pow(j) > x {
				break;
			}
			if i.pow(j) > maxi {
				maxi = i.pow(j);
				a.pop();
				a.pop();
				a.push(j as i32);
				a.push(i);
			}
		}
	}
	let b = a.pop().unwrap();
	let p = a.pop().unwrap();
	println!("{}", b.pow(p as u32));
}