def gcd(a, b): while b: a, b = b, a%b return a def isPrimeMR(n): d = n-1 d = d//(d& -d) L = [2] for a in L: t = d y = pow(a, t, n) if y == 1: continue while y != n-1: y = (y*y)%n if y == 1 or t == n-1: return 0 t <<= 1 return 1 def findFactorRho(n): m = 1<= 2**20: while n > 1: if isPrimeMR(n): ret[n], n = 1, 1 else: rhoFlg = 1 j = findFactorRho(n) k = 0 while n%j == 0: n //= j k += 1 ret[j] = k if n > 1: ret[n] = 1 if rhoFlg: ret = {x: ret[x] for x in sorted(ret)} return ret N = int(input()) dps = {} U = 30 dp = [0]*U dp[0] = 1 dps[0] = dp for d in range(1, U): ndp = dp[:] for i in range(U): if i+d >= U: continue ndp[i+d] += ndp[i] dp = ndp dps[d] = dp F = primeFactor(N) Z = [0]*U for L in range(1, U): term = 1 dp = dps[L] for p, e in F.items(): term *= dp[e] Z[L] = term M = Z[:] for i in range(U-1, 0, -1): M[i] -= M[i-1] ans = sum(M) print(ans)