import java.util.*;
import java.util.Arrays;

public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	}
} import java.util.*; util.* java import java.util.Arrays; Arrays java.util public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	}
} Main public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	} main {
		Scanner sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int X=sc.nextInt(); X sc.nextInt() sc.nextInt sc int[] num=new int[1001]; num new int[1001] 1001 int l=1; l 1 int ans=0; ans 0 num[0]=1 num[0] num 0 1 for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		} int i=2; int i=2; i 2 i<32 i 32 i++ i++ i {
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		} {
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		} int tmp=i; tmp i for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			} int j=2; int j=2; j 2 j<10 j 10 j++ j++ j {
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			} {
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			} tmp*=i tmp i if(tmp<=1000){
					num[l]=tmp;
					l++;
				} tmp<=1000 tmp 1000 {
					num[l]=tmp;
					l++;
				} num[l]=tmp num[l] num l tmp l++ l Arrays.sort(num) Arrays.sort Arrays num if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		} X<1000 X 1000 {
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		} for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			} int k=0; int k=0; k 0 k<num.length k num.length num num.length k++ k++ k {
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			} {
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			} if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				} num[k]!=0 && num[k]<=X && X<num[k+1] num[k]!=0 && num[k]<=X && X<num[k+1] num[k]!=0 num[k] num k 0 num[k]<=X num[k] num k X X<num[k+1] X num[k+1] num k+1 k 1 { 
					ans=num[k];
				} ans=num[k] ans num[k] num k {
			ans=1000;
		} ans=1000 ans 1000 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 sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	}
} public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	}
} Main
import java.util.*;
import java.util.Arrays;

public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int X=sc.nextInt();
		int[] num=new int[1001];
		int l=1;
		int ans=0;
		num[0]=1;
		
		for(int i=2;i<32;i++){
			int tmp=i;
			for(int j=2;j<10;j++){
				tmp*=i;
				if(tmp<=1000){
					num[l]=tmp;
					l++;
				}
			}
		}

		Arrays.sort(num);

		if(X<1000){
			for(int k=0;k<num.length;k++){
				if(num[k]!=0 && num[k]<=X && X<num[k+1]){ 
					ans=num[k];
				}
			}
		}else{
			ans=1000;
		}


		System.out.println(ans);
		
	}
}