#include typedef unsigned long long uint64; inline static void f(uint64 *X, uint64 *Y, uint64 i) { uint64 n=0; uint64 x=*X; while ((x%i)==0) { n^=1; x/=i; } (*Y)*=(n&1)?i:1; *X=x; return; } int main(){ uint64 X; uint64 Y=1; uint64 i=2; scanf("%lld", &X); f(&X, &Y, i); i++; while ((i*i)<=X) { f(&X, &Y, i); i+=2; } printf ("%lld\n", X*Y); return 0; }