#include //#include using namespace std; // using namespace atcoder; // using mint = modint1000000007; // const int mod = 1000000007; // using mint = modint998244353; // const int mod = 998244353; // const int INF = 1e9; // const long long LINF = 1e18; #define rep(i, n) for (int i = 0; i < (n); ++i) #define rep2(i, l, r) for (int i = (l); i < (r); ++i) #define rrep(i, n) for (int i = (n)-1; i >= 0; --i) #define rrep2(i, l, r) for (int i = (r)-1; i >= (l); --i) #define all(x) (x).begin(), (x).end() #define allR(x) (x).rbegin(), (x).rend() #define P pair template inline bool chmax(A& a, const B& b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(A& a, const B& b) { if (a > b) { a = b; return true; } return false; } #ifndef KWM_T_MATH_MATHUTIL_HPP #define KWM_T_MATH_MATHUTIL_HPP #include #include namespace kwm_t::math { // 約数の個数 inline long long divisor_count(long long n) { std::vector exponents; for (long long i = 2; i * i <= n; i++) { int count = 0; while (n % i == 0) { count++; n /= i; } if (count != 0) exponents.push_back(count); } if (n != 1) exponents.push_back(1); long long result = 1; for (long long e : exponents) { result *= (e + 1); } return result; } // 約数列挙 inline std::vector divisors(long long n) { std::vector result; for (long long i = 1; i * i <= n; i++) { if (n % i == 0) { result.push_back(i); if (i * i != n) result.push_back(n / i); } } std::sort(result.begin(), result.end()); return result; } // 素因数分解 inline std::vector> prime_factorize(long long n) { std::vector> result; for (long long i = 2; i * i <= n; i++) { int count = 0; while (n % i == 0) { count++; n /= i; } if (count != 0) result.emplace_back(i, count); } if (n != 1) result.emplace_back(n, 1); return result; } // オイラーのφ関数 inline long long euler_phi(long long n) { long long result = n; for (long long i = 2; i * i <= n; i++) { if (n % i == 0) { result -= result / i; while (n % i == 0) n /= i; } } if (n != 1) result -= result / n; return result; } // 二項係数愚直 template inline T binomial(long long n, long long k) { if (n < k || k < 0) return T(0); k = std::min(k, n - k); T numerator = 1; T denominator = 1; for (long long i = 1; i <= k; i++) { numerator *= T(n - k + i); denominator *= T(i); } numerator /= denominator; return numerator; } } // namespace kwm_t::math #endif // KWM_T_MATH_MATHUTIL_HPP int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); long long n; cin >> n; auto p = kwm_t::math::prime_factorize(n); int ans = 1; for (auto e : p) { if (e.second >= 2) { ans = 0; break; } else { ans *= -1; } } cout << ans << endl; return 0; }