import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	}

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

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	}

} Main public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	} main {
		Scanner stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	} Scanner stdIn = new Scanner(System.in); stdIn new Scanner(System.in) int x = stdIn.nextInt(); x stdIn.nextInt() stdIn.nextInt stdIn int y = 0; y 0 int max = Integer.MIN_VALUE; max Integer.MIN_VALUE Integer Integer.MIN_VALUE if(x==1) {
			System.out.println(1);
			return;
		} x==1 x 1 {
			System.out.println(1);
			return;
		} System.out.println(1) System.out.println System.out System System.out 1 return; for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		} int i = 1; int i = 1; i 1 i < x i x i++ i++ i {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		} {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		} for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			} int j = 2; int j = 2; j 2 j < 15 j 15 j++ j++ j {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			} {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			} if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				} Math.pow(i,j) <= x && max < Math.pow(i, j) Math.pow(i,j) <= x Math.pow(i,j) Math.pow Math i j x 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 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 stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	}

} public class Main {

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	}

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

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		int x = stdIn.nextInt();
		int y = 0;
		int max = Integer.MIN_VALUE;
		
		if(x==1) {
			System.out.println(1);
			return;
		}
		
		for(int i = 1; i < x; i++) {
			for(int j = 2; j < 15; j++) {
				if(Math.pow(i,j) <= x && max < Math.pow(i, j)) {
					max = (int)Math.pow(i, j);
				}
			}
		}
		System.out.println(max);
	}

}
