import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    }
} import java.util.*; util.* java public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    } main {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int x = Integer.parseInt(sc.next()); x Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc List l = new ArrayList<>(); l new ArrayList<>() int max = 1; max 1 for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        } int i = 2; int i = 2; i 2 i <= Math.sqrt(x) i Math.sqrt(x) Math.sqrt Math x i++ i++ i {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        } {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        } int j = 2; j 2 while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            } true {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            } if(Math.pow(i, j) > x) break; Math.pow(i, j) > x Math.pow(i, j) Math.pow Math i j x break; if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                } l.contains(Math.pow(i, j)) l.contains l Math.pow(i, j) Math.pow Math i j break; {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                } if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    } max < Math.pow(i, j) max Math.pow(i, j) Math.pow Math i j {
                        max = (int)Math.pow(i, j);
                    } max = (int)Math.pow(i, j) max (int)Math.pow(i, j) Math.pow Math i j j++ j System.out.println(max) System.out.println System.out System System.out max String[] args args public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    }
} public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    }
} Main
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = Integer.parseInt(sc.next());
        List l = new ArrayList<>();
        int max = 1;
        for(int i = 2; i <= Math.sqrt(x); i++) {
            int j = 2;
            while(true) {
                if(Math.pow(i, j) > x) break;
                if(l.contains(Math.pow(i, j)))  break;
                else {
                    if(max < Math.pow(i, j)) {
                        max = (int)Math.pow(i, j);
                    }
                }
                j++;
            }
        }
        System.out.println(max);
    }
}
