#include <bits/stdc++.h>
using namespace std;
long long n;
bool ispri[1000005];
int p[1000005];
inline long long read() {
  long long w = 0, X = 0;
  register char ch = 0;
  while (!isdigit(ch)) {
    w |= ch == '-';
    ch = getchar();
  }
  while (isdigit(ch)) {
    X = (X << 1) + (X << 3) + (ch ^ 48);
    ch = getchar();
  }
  return w ? -X : X;
}
inline bool check(long long num) {
  if (num < 1000005) return !ispri[num];
  for (register int i = 1; i <= p[0] && 1LL * p[i] * p[i] <= num; i++)
    if (num % p[i] == 0) return 0;
  return 1;
}
inline long long F(long long num, register int last) {
  if (num == 1) return 1;
  if (p[last] + 1 > num) return 0;
  if (p[last] + 1 == num) return 1;
  if (1LL * p[last] * p[last] + 1LL > num) return check(num - 1);
  long long now = p[last], sum = F(num, last + 1);
  for (; now + 1 <= num; now = now * p[last])
    if (num % (now + 1) == 0) sum += F(num / (now + 1), last + 1);
  return sum;
}
int main() {
  n = read();
  for (register int i = 2; i < 1000005; i++) {
    if (!ispri[i]) p[++p[0]] = i;
    for (register int j = 1; j <= p[0] && i * p[j] < 1000005; j++) {
      ispri[i * p[j]] = 1;
      if (i % p[j] == 0) break;
    }
  }
  printf("%lld\n", F(n, 1));
  return 0;
}
