#include <bits/stdc++.h>
using namespace std;
long long A;
int mrk[1000100], p[1000100], cnt, ans;
inline void List(int n) {
  for (int i = 2; i <= n; i++) {
    if (!mrk[i]) p[++cnt] = i;
    for (int j = 1; j <= cnt && i * p[j] <= n; j++) {
      mrk[i * p[j]] = 1;
      if (i % p[j] == 0) break;
    }
  }
}
inline bool Pd(long long x) {
  if (x == A - 1) int deb = 0;
  for (int i = 1; p[i] * 1ll * p[i] <= x && i <= cnt; i++)
    if (x % p[i] == 0) return (0);
  return (1);
}
inline int Dfs(int x, long long y) {
  if (y == 1) return (1);
  if (y < p[x] + 1) return (0);
  if (y < p[x] * 1ll * p[x] + 1) return (Pd(y - 1));
  if (x > cnt) return (Pd(y - 1));
  int tmp = Dfs(x + 1, y);
  for (long long d = p[x]; d <= y; d *= p[x])
    if (y % (d + 1) == 0) {
      tmp += Dfs(x + 1, y / (d + 1));
    }
  return (tmp);
}
int main() {
  List(1000000);
  scanf("%I64d", &A);
  int ans = Dfs(1, A);
  printf("%d\n", ans);
}
