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.util.*;

public class Main {

    Scanner sc = new Scanner(System.in);

    List<Long> list = new ArrayList<>();

    public static void main(String[] args) {
        new Main().run();
    }

    void run() {
        long n = sc.nextLong();

        long cnt = 0;

        Set<Long> nj = new HashSet<>();
        Set<Long> remain = new HashSet<>();

        nj.add(n);


        long root = (int)Math.sqrt(n);

        for (long i=1; i<=root; i++) {
            if (n%i==0) {
                nj.add(i);
                nj.add(n/i);
            }
        }
        for (long i=1; i<=root; i++) {
            if ((n-1)%i==0) {
                remain.add(i);
                remain.add((n-1)/i);
            }
        }

        List<Long> tmp = new ArrayList<>();

        for (long t: nj) {
            long tN = n;
            if (t==1) continue;
            while (tN%t==0) {
                tN /= t;
            }
            if (tN%t==1) {
                cnt++;
                tmp.add(t);
            }
        }



//        System.out.println(nj);
//        System.out.println("tmp"+tmp);
//        System.out.println(remain);

//        System.out.println(cnt);
        System.out.println(cnt+remain.size()-1);

    }

}
