#include <bits/stdc++.h>
using namespace std;
long long int cnt[1000050];
vector<long long int> A(1000050, 0);
bool isprime(int n) {
  for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) return false;
  }
  return true;
}
int main(void) {
  long long int N, P;
  long long int ans = 1;
  long long int i = 2;
  long long int cnt = 0;
  int check = 1;
  cin >> N >> P;
  if (N == 1) {
    cout << P << endl;
    return 0;
  }
  while (P > 1) {
    if (P % i == 0) {
      cnt++;
      P /= i;
      if (cnt >= N) {
        if (check == 1) {
          ans = max(ans, i * ans);
          check = 0;
        }
      }
    } else {
      i++;
      cnt = 0;
      check = 1;
    }
  }
  cout << ans << endl;
  return 0;
}
