###草



import math



N = int(eval(input()))



Klist = [0]*(int(N**(1/2))+1)

count = 1###int(N**(1/2))+1以上についてカウント

###あらかじめK=Nはカウント



for i in range(1,int((N-1)**(1/2))+1):

    if (N-1) % i == 0:

        Klist[i] = 1

        count += 1

        ###

        #print(i,(N-1)//i)

        ###



if  (N-1)**(1/2) - int((N-1)**(1/2)) < 1e-10 or 1 + int((N-1)**(1/2)) - ((N-1)**(1/2)) < 1e-10:

    count -= 1



M = int(math.log2(N))



for m in range(1,M+1):

    if m >= 2 and (N**(1/m) - int(N**(1/m)) < 1e-10 or 1+int(N**(1/m))-N**(1/m) < 1e-10):###m=1のときはK=Nの話なのでpass

        Klist[round(N**(1/m))] = 1

    for K in range(2,int(N**(1/(m+1))+1)):

        if (N-K**m)%(K**(m+1)) == 0:

            Klist[K] = 1

###

#print("count",count)

#print(Klist[:100])

###

print((sum(Klist)+count-Klist[1]))

N = int(eval(input()))

ans = 0



L = [0]*(int((N-1)**(1/2))+1)



for i in range(1,int((N-1)**(1/2))+1):

    if (N-1)%i == 0:

        ans += 2

        L[i] = 1

        ###

        #print(i,(N-1)//i)

        ###

    if i**2 == N-1:

        ans -= 1



for i in range(1,int(N**(1/2))+1):

    if i < int((N-1)**(1/2))+1 and L[i] == 1:

        continue

    if N%i == 0:

        NN = N

        while NN % i == 0:

            NN //= i

        if NN % i == 1:

            ans += 1

            #print(i)

        if i**2 == N:

            continue

        NN = N

        j = N//i

        while NN % j == 0:

            NN //= j

        if NN % j == 1:

            ans += 1

            #print(j)



print(ans)

###1が前半部分で数えられるので, 引く必要があるが, ここで1を数えたことで

###後半でN自身がカウントされていないので+-0
###草
import math

N = int(eval(input()))
Klist = [0] * (int(N ** (1 / 2)) + 1)
count = 1  ###int(N**(1/2))+1以上についてカウント
###あらかじめK=Nはカウント
for i in range(1, int((N - 1) ** (1 / 2)) + 1):
    if (N - 1) % i == 0:
        Klist[i] = 1
        count += 1
        ###
        # print(i,(N-1)//i)
        ###
if (N - 1) ** (1 / 2) - int((N - 1) ** (1 / 2)) < 1e-10 or 1 + int(
    (N - 1) ** (1 / 2)
) - ((N - 1) ** (1 / 2)) < 1e-10:
    count -= 1
M = int(math.log2(N))
for m in range(1, M + 1):
    if m >= 2 and (
        N ** (1 / m) - int(N ** (1 / m)) < 1e-10
        or 1 + int(N ** (1 / m)) - N ** (1 / m) < 1e-10
    ):  ###m=1のときはK=Nの話なのでpass
        Klist[round(N ** (1 / m))] = 1
    for K in range(2, int(N ** (1 / (m + 1)) + 1)):
        if (N - K**m) % (K ** (m + 1)) == 0:
            Klist[K] = 1
###
# print("count",count)
# print(Klist[:100])
###
print((sum(Klist) + count - Klist[1]))

N = int(eval(input()))
ans = 0
L = [0] * (int((N - 1) ** (1 / 2)) + 1)
for i in range(1, int((N - 1) ** (1 / 2)) + 1):
    if (N - 1) % i == 0:
        ans += 2
        L[i] = 1
        ###
        # print(i,(N-1)//i)
        ###
    if i**2 == N - 1:
        ans -= 1
for i in range(1, int(N ** (1 / 2)) + 1):
    if i < int((N - 1) ** (1 / 2)) + 1 and L[i] == 1:
        continue
    if N % i == 0:
        NN = N
        while NN % i == 0:
            NN //= i
        if NN % i == 1:
            ans += 1
            # print(i)
        if i**2 == N:
            continue
        NN = N
        j = N // i
        while NN % j == 0:
            NN //= j
        if NN % j == 1:
            ans += 1
            # print(j)
print(ans)
###1が前半部分で数えられるので, 引く必要があるが, ここで1を数えたことで
###後半でN自身がカウントされていないので+-0

-###草 -import math - -Klist = [0] * (int(N ** (1 / 2)) + 1) -count = 1  ###int(N**(1/2))+1以上についてカウント -###あらかじめK=Nはカウント +ans = 0 +L = [0] * (int((N - 1) ** (1 / 2)) + 1) -        Klist[i] = 1 -        count += 1 +        ans += 2 +        L[i] = 1 -if (N - 1) ** (1 / 2) - int((N - 1) ** (1 / 2)) < 1e-10 or 1 + int( -    (N - 1) ** (1 / 2) -) - ((N - 1) ** (1 / 2)) < 1e-10: -    count -= 1 -M = int(math.log2(N)) -for m in range(1, M + 1): -    if m >= 2 and ( -        N ** (1 / m) - int(N ** (1 / m)) < 1e-10 -        or 1 + int(N ** (1 / m)) - N ** (1 / m) < 1e-10 -    ):  ###m=1のときはK=Nの話なのでpass -        Klist[round(N ** (1 / m))] = 1 -    for K in range(2, int(N ** (1 / (m + 1)) + 1)): -        if (N - K**m) % (K ** (m + 1)) == 0: -            Klist[K] = 1 -### -# print("count",count) -# print(Klist[:100]) -### -print((sum(Klist) + count - Klist[1])) +    if i**2 == N - 1: +        ans -= 1 +for i in range(1, int(N ** (1 / 2)) + 1): +    if i < int((N - 1) ** (1 / 2)) + 1 and L[i] == 1: +        continue +    if N % i == 0: +        NN = N +        while NN % i == 0: +            NN //= i +        if NN % i == 1: +            ans += 1 +            # print(i) +        if i**2 == N: +            continue +        NN = N +        j = N // i +        while NN % j == 0: +            NN //= j +        if NN % j == 1: +            ans += 1 +            # print(j) +print(ans) +###1が前半部分で数えられるので, 引く必要があるが, ここで1を数えたことで +###後半でN自身がカウントされていないので+-0