1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<bits/stdc++.h>
using namespace std;

#define MEM(a, b) memset(a, (b), sizeof(a))
#define CLR(a) memset(a, 0, sizeof(a))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define ABS(X) ( (X) > 0 ? (X) : ( -(X) ) )
#define S(X) ( (X) * (X) )
#define SZ(V) (int )V.size()
#define FORN(i, n) for(i = 0; i < n; i++)
#define FORAB(i, a, b) for(i = a; i <= b; i++)
#define ALL(V) V.begin(), V.end()
#define IN(A, B, C)  ((B) <= (A) && (A) <= (C))
#define AIN(A, B, C) assert(IN(A, B, C))

typedef pair<int,int> PII;
typedef pair<double, double> PDD;
typedef vector<int> VI;
typedef vector<PII> VP;

//typedef int LL;
typedef long long int LL;

LL ans = 0;

void check2(int q, int n) {
  n /= q;
  n--;
  ans += n > 1;
}

void check(int p, int n) {
  n /= p;
  n--;

  for (int q = 2; q * q <= n; q++) {
    if (n % q) continue;
    check2(q, n);
    if (q * q != n) check2(n/q, n);
  }
}

int main() {
  int n;
  scanf("%d", &n);
  for (int p = 1; p * p <= n; p++) {
    if (n % p) continue;
    check(p, n);
    if (p * p != n) check(n/p, n);
  }
  printf("%lld\n", ans);
  return 0;
}