Given is a positive integer N.

We will choose an integer K between 2 and N (inclusive), then we will repeat the operation below until N becomes less than K.

* Operation: if K divides N, replace N with N/K; otherwise, replace N with N-K.



In how many choices of K will N become 1 in the end?

Constraints

* 2 \leq N \leq 10^{12}
* N is an integer.

Input

Input is given from Standard Input in the following format:


N


Output

Print the number of choices of K in which N becomes 1 in the end.

Examples

Input

6


Output

3


Input

3141


Output

13


Input

314159265358


Output

9
#include <bits/stdc++.h>
using namespace std;

int main(){
  int64_t N;
  cin >> N;

  unordered_set<int64_t> divs;

  // 2以上であるN-1の約数,
  // Nの約数の一部を(N自身とsqrt(N)以下のものを試して)追加
  divs.insert(N);
  if(N-1 > 1){ divs.insert(N-1); }
  int64_t div= 2;
  while(div*div <= N){
    int cnt= 0;
    int64_t tmp= N;
    while(tmp%div==0){
      cnt++;
      tmp/= div;
    }
    if(tmp%div==1){
      divs.insert(div);
      if(cnt==0){ divs.insert((N-1)/div); }
    }

    div++;
  }
  
  cout << divs.size() << endl;
}