#include <bits/stdc++.h>
using namespace std;
long long shh[1000005];
long long a[1000005], kq[1000005];
long long n, vt;
int kt(long long x) {
  int j;
  for (j = 2; j <= 1000005; j++) {
    if (shh[j] > x) return 0;
    if (x == shh[j]) return 1;
  }
  return 0;
}
void rs() {
  int i;
  for (i = 0; i <= vt; i++) a[i] = 0;
}
int timuoc(long long n) {
  long long i, x, xp;
  x = round(sqrt(n));
  xp = 0;
  for (i = 1; i <= x; i++) {
    if (n % i == 0) {
      xp++;
      a[xp] = i;
      if (i != n / i) {
        xp++;
        a[xp] = n / i;
      }
    }
  }
  sort(a + 1, a + xp + 1);
  return xp;
}
void solve() {
  long long i, j;
  long long dung, xp;
  for (i = 2; i <= 1000001; i++) shh[i] = i * i;
  vt = timuoc(n);
  for (i = 1; i <= vt; i++) kq[i] = a[i];
  rs();
  for (i = vt; i > 0; i--) {
    xp = timuoc(kq[i]);
    dung = 1;
    for (j = 1; j <= xp; j++) {
      if (kt(a[j]) == 1) {
        dung = 0;
        break;
      }
    }
    if (dung == 1) {
      printf("%I64d\n", kq[i]);
      return;
    }
    rs();
  }
}
int main() {
  while (scanf("%I64d", &n) == 1) solve();
  return 0;
}
