import java.util.*;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.Collection;


public class Main{
   

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int X=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    }

        
        
    } import java.util.*; util.* java import java.util.Arrays; Arrays java.util import java.util.ArrayList; ArrayList java.util import java.util.Set; Set java.util import java.util.HashSet; HashSet java.util import java.util.Collection; Collection java.util public class Main{
   

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int X=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    }

        
        
    } Main public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int X=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    } main {
        Scanner sc=new Scanner(System.in);
        int X=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    } Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int X=sc.nextInt(); X sc.nextInt() sc.nextInt sc int max=0; max 0 if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        } X==1 X 1 {
            System.out.println(1);
        } System.out.println(1) System.out.println System.out System System.out 1 {
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        } for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            } int i=2; int i=2; i 2 i<=(int)Math.pow(X,0.5) i (int)Math.pow(X,0.5) Math.pow Math X 0.5 i++ i++ i {
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            } {
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            } for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                } int j=1; int j=1; j 1 (int)Math.pow(i,j)<=X (int)Math.pow(i,j) Math.pow Math i j X j++ j++ j {
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                } {
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                } if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    } (int)Math.pow(i,j)>=max (int)Math.pow(i,j) Math.pow Math i j max {
                        max=(int)Math.pow(i,j);
                    } max=(int)Math.pow(i,j) max (int)Math.pow(i,j) Math.pow Math i 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=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    }

        
        
    } public class Main{
   

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int X=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    }

        
        
    } Main
import java.util.*;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.Collection;


public class Main{
   

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int X=sc.nextInt();
        int max=0;
        if(X==1){
            System.out.println(1);
        }else{
            for(int i=2;i<=(int)Math.pow(X,0.5);i++){
                for(int j=1;(int)Math.pow(i,j)<=X;j++){
                    if((int)Math.pow(i,j)>=max){
                        max=(int)Math.pow(i,j);
                    }
                }
            }
            System.out.println(max);
        }
        

    }

        
        
    }
