// yukicoder 300 (http://yukicoder.me/problems/817) #include #include #define itr(it,a) for(auto it=(a).begin();it!=(a).end();++it) typedef long long ll; ll X; std::map prime_factor( ll n ) { std::map ret; for( ll i = 2; i*i <= n; ++i ) while( n % i == 0 ) { n /= i; ++ret[i]; } if( n != 1 ) ++ret[n]; return ret; } int main() { std::cin >> X; auto m = prime_factor( X ); ll Y = 1; itr( it, m ) if( it->second&1 ) Y *= it->first; std::cout << Y << std::endl; return 0; }