import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

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

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

    }
} Main public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

    } main {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

    } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) int x = scanner.nextInt(); x scanner.nextInt() scanner.nextInt scanner int ans = 1; ans 1 for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        } int b = 2; int b = 2; b 2 b <= x b x b++ b++ b {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        } {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        } int power = b * b; power b * b b b for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            } int p = 2; int p = 2; p 2 p++ p++ p {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            } {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            } if (power > x) {
                    break;
                } power > x power x {
                    break;
                } break; ans = Math.max(ans, power) ans Math.max(ans, power) Math.max Math ans power power *= b power b 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 scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

    }
} public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

    }
} Main
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int ans = 1;

        // iが1の場合は何度かけても1となるので、初期値は2とする
        for (int b = 2; b <= x; b++) {
            int power = b * b;

            // pの初期値も同様
            for (int p = 2; ; p++) {
                if (power > x) {
                    break;
                }

                ans = Math.max(ans, power);

                power *= b;

            }

        }

        System.out.println(ans);

    }
}