import java.util.*;

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

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

    System.out.println(res);
  }
} import java.util.*; util.* java public class Main {
  public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

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

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

    System.out.println(res);
  } main {
    Scanner sc = new Scanner(System.in);

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

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

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

    System.out.println(res);
  }
} public class Main {
  public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

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

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

    int x = sc.nextInt();
    int tmp_p = x;
    int res = 0;

    for (int i = 0; i < x; i ++) {
      if (x==1) {
        res = 1;
        break;
      }
      
      for (int j = 2; j < tmp_p; j++) {
        if ((int)Math.pow(i, j) <= x) {
          res = Math.max(res, (int)Math.pow(i, j));
        } else {
          tmp_p = j;
          break;
        }
      }
    }

    System.out.println(res);
  }
}
