#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 10;
long long a;
bool used[N];
vector<long long> prime;
bool check(long long x) {
  if (x < N) return 1 - used[x];
  for (long long i = 0; prime[i] * prime[i] <= x; ++i)
    if (!(x % prime[i])) return 0;
  return 1;
}
long long solve(long long val, long long pos) {
  if (val == 1) return 1;
  long long x = prime[pos];
  if (x >= val) return 0;
  if (x * x >= val) return ((check(val - 1)) ? 1LL : 0LL);
  long long res = solve(val, pos + 1);
  while (true) {
    if (x > val) return res;
    if (val % (x + 1) == 0) res += solve(val / (x + 1), pos + 1);
    x *= prime[pos];
  }
  return res;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> a;
  used[1] = true;
  for (long long i = 2; i < N; ++i) {
    if (!used[i]) {
      prime.push_back(i);
      for (long long j = i * i; j < N; j += i) used[j] = true;
    }
  }
  cout << solve(a, 0);
}
