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;
using ll=long long;
constexpr ll mod=1e9+7;

set<ll> div(ll n)
{
  set<ll> ret;
  ret.insert(n);
  for (int i = 2; i <= sqrt(n); ++i)
  {
    if(n%i==0) 
    {
      ret.insert(i);
      ret.insert(n/i);
    }
  }
  return ret;
}

int main()
{
  ll n;
  cin>>n;
  if(n==2)
  {
    cout<<1;
    return 0;
  }
  ll ans=div(n-1).size();
  set<ll> divn=div(n);
  for(const auto& e: divn) 
  {
    if(e>sqrt(n)) break;
    ll m=n;
    while(m%e==0)
    {
      m/=e;
    }
    if(m%e==1) ans++;
  }
  cout<<ans+1;
}