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
import java.io.BufferedInputStream;
import java.util.Scanner;

/**
 * Created by Harry on 4/7/20.
 */
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(new BufferedInputStream(System.in));
        long N = scanner.nextLong();
        if(N==2){
            System.out.print(1);
            return;
        }
        long res = 2+count(N-1);
        for(long k=2; k<=Math.sqrt(N); k++){
            if((N-1)%k!=0 && isFeasible(N, k)){
                res++;
            }
        }
        System.out.print(res);
    }

    public static boolean isFeasible(long N, long k){
        if(N%k==0){
            while(N%k==0){
                N = N/k;
            }
            return N%k==1;
        }
        return false;
    }

    public static long count(long n){
        int res = 0;
        for(long i=2; i<=Math.sqrt(n); i++){
            if(n%i==0){
                res+=1;
                if(i*i!=n){
                    res++;
                }
            }
        }
        return res;
    }
}
