#include using namespace std; typedef long long ll; typedef vector vi; #define REP(i, a, b) for(int i=a;i m; int cd(ll X){ if(X > 1){ REP(i,2,X+1){ if(X%i==0){ map::iterator it = m.find(i); if(it != m.end()){ it->second++; return cd(X/i); } else { m.insert(make_pair(i,1)); return cd(X/i); } } } } m.insert(make_pair(X,1)); return 1; } int main(){ ll X; cin >> X; ll Y = 1; if(cd(X)){ for(auto i = m.begin(); i != m.end(); ++i){ if(i->second%2!=0){ Y *= i->first; } } } cout << Y << endl; return 0; }