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 C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<stdio.h>
int expo(int b,int p);
int main(void){
    int N;
    scanf("%d",&N);
    if(N == 1){
        printf("%d",1);
    }else{
        //bは31まで
    //配列ex[i]はiをp乗してN未満の最大のべき乗をもとめ、代入する
    int ex[31];
        //while文で回す
     int i,p;
        for(i = 2;i <= 31;i++){
            
            p = 0;
            while(expo(i,p+1) < N){
                p++;
            }
            ex[i] = expo(i,p);

        }
    //ex[]の最大値を求める
    int max = ex[0];
    for(i = 2;i <= 31;i++){
        if(ex[i] >= max){
            max = ex[i];
        }
    }

    printf("%d",max);
    }

}

int expo(int b,int p){

    if(p == 0){
        return 1;
    }else if(p == 1){
        return b;
    }else{
        int a = expo(b,p-1);
        return a * b;
    }

}