import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    }

    private static int solve(int X) {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    }
} import java.util.Scanner; Scanner java.util public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    }

    private static int solve(int X) {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    } main {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int X = sc.nextInt(); X sc.nextInt() sc.nextInt sc System.out.println( solve(X) ) System.out.println System.out System System.out solve(X) solve X String[] args args private static int solve(int X) {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    } solve {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    } int max = 1; max 1 int B = (int)Math.floor(Math.sqrt(X)); B (int)Math.floor(Math.sqrt(X)) Math.floor Math Math.sqrt(X) Math.sqrt Math X return max; max int X X public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    }

    private static int solve(int X) {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    }
} public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    }

    private static int solve(int X) {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    }
} Main
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();

        System.out.println( solve(X) );
    }

    private static int solve(int X) {
        int max = 1;
        int B = (int)Math.floor(Math.sqrt(X));

        loop: for (int b = 2; b <= B ; b++) {
            for (int p = 2; p < 100; p++) {
                int r = (int)Math.pow(b, p);
                if( r > X ) {
                    continue loop;
                }
                max = Math.max((int)Math.pow(b, p), max);
            }
        }
        return max;
    }
}
