import java.util.*;

class Main{
	static Scanner s=new Scanner(System.in);
	static int gInt(){
		return Integer.parseInt(s.next());
	}
	public static void main(String[] A){
		int a=gInt();
		long r=1;
		for(int i=2;i<a;++i){
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		}
		System.out.println(r);
	}
} import java.util.*; util.* java class Main{
	static Scanner s=new Scanner(System.in);
	static int gInt(){
		return Integer.parseInt(s.next());
	}
	public static void main(String[] A){
		int a=gInt();
		long r=1;
		for(int i=2;i<a;++i){
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		}
		System.out.println(r);
	}
} Main static Scanner s=new Scanner(System.in); s new Scanner(System.in) static int gInt(){
		return Integer.parseInt(s.next());
	} gInt {
		return Integer.parseInt(s.next());
	} return Integer.parseInt(s.next()); Integer.parseInt(s.next()) Integer.parseInt Integer s.next() s.next s public static void main(String[] A){
		int a=gInt();
		long r=1;
		for(int i=2;i<a;++i){
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		}
		System.out.println(r);
	} main {
		int a=gInt();
		long r=1;
		for(int i=2;i<a;++i){
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		}
		System.out.println(r);
	} int a=gInt(); a gInt() gInt long r=1; r 1 for(int i=2;i<a;++i){
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		} int i=2; int i=2; i 2 i<a i a ++i ++i i {
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		} {
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		} long v=i*i; v i*i i i if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			} v<=a v a {
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			} while(v*i<=a)
					v*=i; v*i<=a v*i v i a v*=i v i r=Math.max(r,v) r Math.max(r,v) Math.max Math r v System.out.println(r) System.out.println System.out System System.out r String[] A A
import java.util.*;

class Main{
	static Scanner s=new Scanner(System.in);
	static int gInt(){
		return Integer.parseInt(s.next());
	}
	public static void main(String[] A){
		int a=gInt();
		long r=1;
		for(int i=2;i<a;++i){
			long v=i*i;
			if(v<=a){
				while(v*i<=a)
					v*=i;
				r=Math.max(r,v);
			}
		}
		System.out.println(r);
	}
}
