import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    }
} import java.util.*; util.* java public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    } main {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int x=sc.nextInt(); x sc.nextInt() sc.nextInt sc int pow; pow int ans=1; ans 1 for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        } int i=2; int i=2; i 2 i<=Math.sqrt(x) i Math.sqrt(x) Math.sqrt Math x i++ i++ i {
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        } {
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        } pow=1 pow 1 while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            } Math.pow(i, ++pow)<=x Math.pow(i, ++pow) Math.pow Math i ++pow pow x {
                ans=Math.max(ans,(int)Math.pow(i, pow));
            } ans=Math.max(ans,(int)Math.pow(i, pow)) ans Math.max(ans,(int)Math.pow(i, pow)) Math.max Math ans (int)Math.pow(i, pow) Math.pow Math i pow System.out.println(ans) System.out.println System.out System System.out ans String[] args args public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    }
} public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    }
} Main
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x=sc.nextInt();
        int pow;
        int ans=1;
        for(int i=2;i<=Math.sqrt(x);i++){
            pow=1;
            while(Math.pow(i, ++pow)<=x){
                ans=Math.max(ans,(int)Math.pow(i, pow));
            }
        }
        System.out.println(ans);
        

    }
}