#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
vector<pair<long long, long long> > pf(long long A) {
  vector<pair<long long, long long> > ans;
  for (long long i = 2; i * i <= A; ++i) {
    if (A % i) continue;
    int pw = 0;
    while ((A % i) == 0) pw++, A /= i;
    ans.push_back(make_pair(i, pw));
  }
  if (A > 1) ans.push_back(make_pair(A, 1));
  return ans;
}
vector<long long> factors(long long A) {
  vector<long long> ans;
  for (long long i = 1; i * i <= A; ++i) {
    if (A % i) continue;
    ans.push_back(i);
    if (i != A / i) ans.push_back(A / i);
  }
  sort(ans.begin(), ans.end());
  return ans;
}
vector<long long> U;
vector<long long> pppv;
unordered_map<long long, unordered_map<int, long long> > dp;
long long solve(long long A, int i) {
  if (dp[A].count(i)) return dp[A][i];
  long long& ans = dp[A][i];
  if (A == 1) return ans = 1;
  if (i < 0) return ans = 0;
  ans = 0;
  long long v = U[i];
  long long no_use = solve(A, i - 1);
  long long j = pppv[i];
  long long use_me = ((A % v) ? 0 : solve(A / v, j));
  ans = no_use + use_me;
  return ans;
}
long long J(long long x) {
  long long ans = 0;
  for (long long k = 1; k <= x; ++k) {
    if (x % k) continue;
    if (gcd(k, x / k) != 1) continue;
    ans += k;
  }
  return ans;
}
vector<pair<long long, long long> > U2;
vector<long long> F;
vector<vector<pair<long long, long long> > > Q;
int ord[1000000];
int main() {
  long long A;
  cin >> A;
  F = factors(A);
  int K = F.size();
  for (int i = 0; i < (K); ++i) {
    Q.push_back(pf(F[i] - 1));
  }
  for (int i = 0; i < (K); ++i)
    if (Q[i].size() == 1) U2.push_back(make_pair(Q[i][0].first, F[i]));
  K = U2.size();
  sort(U2.begin(), U2.end());
  U.resize(K);
  for (int i = 0; i < (K); ++i) U[i] = U2[i].second;
  pppv.resize(K);
  for (int i = 0; i < (K); ++i) {
    if (i > 0 && gcd(U[i] - 1, U[i - 1] - 1) != 1)
      pppv[i] = pppv[i - 1];
    else
      pppv[i] = i - 1;
  }
  long long ans = solve(A, K - 1);
  cout << ans << endl;
}
