import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main{
	public static void main(String[] args) {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String str="";
		int impt=0;
		int beki_max=0;
		int keka=0;
		int moto=0;
		int keka_max=0;

		try {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		}catch(IOException e) {

		}
		catch(NumberFormatException ee) {
			System.exit(0);
		}

		catch(NullPointerException eee) {
			System.exit(0);
		}

	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io class Main{
	public static void main(String[] args) {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String str="";
		int impt=0;
		int beki_max=0;
		int keka=0;
		int moto=0;
		int keka_max=0;

		try {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		}catch(IOException e) {

		}
		catch(NumberFormatException ee) {
			System.exit(0);
		}

		catch(NullPointerException eee) {
			System.exit(0);
		}

	}
} Main public static void main(String[] args) {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String str="";
		int impt=0;
		int beki_max=0;
		int keka=0;
		int moto=0;
		int keka_max=0;

		try {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		}catch(IOException e) {

		}
		catch(NumberFormatException ee) {
			System.exit(0);
		}

		catch(NullPointerException eee) {
			System.exit(0);
		}

	} main {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String str="";
		int impt=0;
		int beki_max=0;
		int keka=0;
		int moto=0;
		int keka_max=0;

		try {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		}catch(IOException e) {

		}
		catch(NumberFormatException ee) {
			System.exit(0);
		}

		catch(NullPointerException eee) {
			System.exit(0);
		}

	} BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); bfr new BufferedReader(new InputStreamReader(System.in)) String str=""; str "" int impt=0; impt 0 int beki_max=0; beki_max 0 int keka=0; keka 0 int moto=0; moto 0 int keka_max=0; keka_max 0 try {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		}catch(IOException e) {

		}
		catch(NumberFormatException ee) {
			System.exit(0);
		}

		catch(NullPointerException eee) {
			System.exit(0);
		} catch(IOException e) {

		} IOException e {

		} catch(NumberFormatException ee) {
			System.exit(0);
		} NumberFormatException ee {
			System.exit(0);
		} System.exit(0) System.exit System 0 catch(NullPointerException eee) {
			System.exit(0);
		} NullPointerException eee {
			System.exit(0);
		} System.exit(0) System.exit System 0 {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		} str=bfr.readLine() str bfr.readLine() bfr.readLine bfr if(str.equals("")) {
				System.exit(0);
			} str.equals("") str.equals str "" {
				System.exit(0);
			} System.exit(0) System.exit System 0 impt=Integer.parseInt(str) impt Integer.parseInt(str) Integer.parseInt Integer str if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			} impt<=3 impt 3 {
				System.out.println("1");
				System.exit(0);
			} System.out.println("1") System.out.println System.out System System.out "1" System.exit(0) System.exit System 0 if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			} impt==1000 impt 1000 {
				System.out.println("1000");
				System.exit(0);
			} System.out.println("1000") System.out.println System.out System System.out "1000" System.exit(0) System.exit System 0 beki_max=(int) ((Math.log(impt) / Math.log(2))) beki_max (int) ((Math.log(impt) / Math.log(2))) Math.log(impt) Math.log Math impt Math.log(2) Math.log Math 2 for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			} int i=2; int i=2; i 2 i<=beki_max i beki_max i++ i++ i {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			} {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			} keka=((int)Math.pow(impt,(double)1/i)) keka ((int)Math.pow(impt,(double)1/i)) Math.pow Math impt (double)1/i (double)1 i moto=keka moto keka for(int j=1; j<i; j++) {
					keka=keka*moto;
				} int j=1; int j=1; j 1 j<i j i j++ j++ j {
					keka=keka*moto;
				} {
					keka=keka*moto;
				} keka=keka*moto keka keka*moto keka moto if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				} keka_max<keka && keka<=impt keka_max<keka keka_max keka keka<=impt keka impt {
					keka_max=keka;
				} keka_max=keka keka_max keka System.out.println(keka_max) System.out.println System.out System System.out keka_max String[] args args
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main{
	public static void main(String[] args) {
		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
		String str="";
		int impt=0;
		int beki_max=0;
		int keka=0;
		int moto=0;
		int keka_max=0;

		try {
			str=bfr.readLine();
			if(str.equals("")) {
				System.exit(0);
			}
			impt=Integer.parseInt(str);
			if(impt<=3) {
				System.out.println("1");
				System.exit(0);
			}
			if(impt==1000) {
				System.out.println("1000");
				System.exit(0);
			}
			beki_max=(int) ((Math.log(impt) / Math.log(2)));


			for(int i=2; i<=beki_max; i++) {
				keka=((int)Math.pow(impt,(double)1/i));

				moto=keka;
				for(int j=1; j<i; j++) {
					keka=keka*moto;
				}
				//System.out.println(keka);
				if(keka_max<keka && keka<=impt) {
					keka_max=keka;
				}
			}
			System.out.println(keka_max);
		}catch(IOException e) {

		}
		catch(NumberFormatException ee) {
			System.exit(0);
		}

		catch(NullPointerException eee) {
			System.exit(0);
		}

	}
}