#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e6+6;
int a;
bool used[maxn];
vector<int> prime;
bool check(int x) {
if(x<maxn) return 1-used[x];
for(int i=0 ; prime[i]*prime[i]<=x ; i++) {
if(!(x%prime[i])) return 0;
}
return 1;
}
int solve(int val ,int pos){
if(val==1) return 1;
int x=prime[pos];
if(x>=val) return 0;
if(x*x>=val ) return((check(val-1))?1ll:0ll) ;
int res=solve(val,pos+1);
while(true){
if(x>val) return res;
if(val%(x+1)==0)
res+=solve(val/(x+1),pos+1);
x*=prime[pos];
}
return res;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>a;
used[1]=true;
for(int i=2 ; i<maxn ; i++) {
if(!used[i]) {
prime.push_back(i);
for(int j=i*i ; j<maxn ; j+=i) used[j]=true;
}
}
cout<<solve(a,0);
}