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>
#define l_ength size
const int inf = (1<<30);
const int mod = 1000000007; // 998244353
using ll = long long;
using namespace std;

ll n;

bool poss( ll x ){
	if( x == 1 ) return false;
	ll k = x;
	while( n%k == 0 ){
		k *= x;
	}
	k /= x;
	return (n/k)%x == 1;
}

int main(){
	cin >> n;
	ll ans = 0;
	ll t = n-1;
	for( ll i = 1; i*i <= t; ++i ){
		if( t%i == 0 ){
			if( i*i == t ) ans += 1;
			else ans += 2;
		}
	}
	ans -= 1;
	for( ll k = 2; k*k <= n; ++k ){
		if( n%k == 0 ){
			if( poss(k) ) ++ans;
		}
	}
	ans += 1;
	cout << ans << endl;
}