Ivan has number $b$. He is sorting through the numbers $a$ from $1$ to $10^{18}$, and for every $a$ writes $\frac{[a, \,\, b]}{a}$ on blackboard. Here $[a, \,\, b]$ stands for least common multiple of $a$ and $b$. Ivan is very lazy, that's why this task bored him soon. But he is interested in how many different numbers he would write on the board if he would finish the task. Help him to find the quantity of different numbers he would write on the board.


-----Input-----

The only line contains one integer — $b$ $(1 \le b \le 10^{10})$.


-----Output-----

Print one number — answer for the problem.


-----Examples-----
Input
1

Output
1
Input
2

Output
2


-----Note-----

In the first example $[a, \,\, 1] = a$, therefore $\frac{[a, \,\, b]}{a}$ is always equal to $1$.

In the second example $[a, \,\, 2]$ can be equal to $a$ or $2 \cdot a$ depending on parity of $a$. $\frac{[a, \,\, b]}{a}$ can be equal to $1$ and $2$.

Difficulty: interview

Starter code:

Solutions:
#JMD
#Nagendra Jha-4096

 
import sys
import math

#import fractions
#import numpy
 
###File Operations###
fileoperation=0
if(fileoperation):
    orig_stdout = sys.stdout
    orig_stdin = sys.stdin
    inputfile = open('W:/Competitive Programming/input.txt', 'r')
    outputfile = open('W:/Competitive Programming/output.txt', 'w')
    sys.stdin = inputfile
    sys.stdout = outputfile

###Defines...###
mod=1000000007
 
###FUF's...###
def nospace(l):
    ans=''.join(str(i) for i in l)
    return ans

ans=[]

def printDivisors(n) : 
      
    # Note that this loop runs till square root 
    i = 1
    while i <= math.sqrt(n): 
          
        if (n % i == 0) : 
              
            # If divisors are equal, print only one 
            if (n / i == i) : 
                ans.append(i) 
            else : 
                # Otherwise print both 
                ans.append(i)
                ans.append(n//i) 
        i = i + 1
 
 
 
##### Main ####
t=1
for tt in range(t):
	n=int(input())
	printDivisors(n)
	s=set(ans)
	print(len(s))
    #a=list(map(int,sys.stdin.readline().split(' ')))
    #n,k,s= map(int, sys.stdin.readline().split(' '))
    
    
#####File Operations#####
if(fileoperation):
    sys.stdout = orig_stdout
    sys.stdin = orig_stdin
    inputfile.close()
    outputfile.close()

n = int(input())
r = 0
for q in range(1, int(n ** (1 / 2))+1):
    if n % q == 0:
        r += 2
if n ** (1 / 2) // 1 == n ** (1 / 2):
    r -= 1
print(r)


def to_prime(n):
    i = 2
    primes = []
    while (i * i <= n):
        if (n % i == 0):
            amount = 0
            while (n % i == 0):
                amount += 1
                n //= i
            primes.append((i, amount))
        i += 1
    if (n != 1):
        primes.append((n, 1))
    return primes

n = int(input())

primes = to_prime(n)
result = 1
for p, k in primes:
    result *= k + 1
print(result)


b = int(input())
divs = 0
i = 1
while i <= b ** 0.5:
    if i == b ** 0.5:
        divs += 1
    elif b % i == 0:
        divs += 2
    i += 1
print(divs)

from math import sqrt as S
def num_div(n):
    if n==1:
        return 1 
    c=2 
    for i in range(2,int(S(n))+1):
        if n%i==0:
            if i==n//i:
                c+=1 
            else:
                c+=2 
    return c 
print(num_div(int(input())))

n = int(input())
a = 0
i = 1
while i*i < n:
    if n%i == 0:
        a += 2
    i += 1
if i*i == n:
    a += 1
print(a)

import math
b=int(input())
k=1
c=0
x=math.floor(b**0.5)

while k<=x:
    if b%k==0:
        c+=2
    k+=1
if x*x==b:
    c-=1
print(c)

b = int(input())
count = 0
i = 1
while i * i <= b:
    if b % i == 0:
        count += 2
        if i * i == b:
            count -= 1
    i += 1
print(count)

n = int(input())

seen = {1, n}
for i in range(1, int(n**0.5) + 2):
    if n % i == 0:
        seen.add(i)
        seen.add(n // i)

print(len(seen))

def prime(b):
    i = 1
    if b == 1:
        return 1
    count = 0
    while i * i <= b:
        if b % i == 0:
            if i * i != b:
                count += 2
            else:
                count += 1
        i += 1
    return count
b = int(input())
print(prime(b))


n = int(input())
c = 0
i = 1
s = set()
while i * i <= n:
    if n % i == 0:
        s.add(i)
        s.add(n // i)
    i += 1
print(len(s))


b = int(input())
n = 0
from math import sqrt
r = int(sqrt(b))
for i in range(1, r+1):
    if b%i==0:
        n+=1
n*=2
if r*r==b:
    n-=1
print(n)


b = int(input())
cur = 1
count = 0
while cur*cur <= b:
    if b%cur == 0:
        count += 2
    if cur*cur == b:
        count -= 1
    cur += 1
print(count)


b = int(input())

def factorize(n):
    fct = []  # prime factor
    b, e = 2, 0  # base, exponent
    while b * b <= n:
        while n % b == 0:
            n = n // b
            e = e + 1
        if e > 0:
            fct.append((b, e))
        b, e = b + 1, 0
    if n > 1:
        fct.append((n, 1))
    return fct


def divisorize(fct):
    try:
        b, e = fct.pop()  # base, exponent
    except:
        return []
    pre_div = divisorize(fct) if fct else [[]]
    suf_div = [[(b, k)] for k in range(e + 1)]
    return [pre + suf for pre in pre_div for suf in suf_div]


def num(fct):
    a = 1
    for base, exponent in fct:
        a = a * base**exponent
    return a

primes = factorize(b)
num_divisors = 1
for prime, num in primes:
    num_divisors *= (num + 1)
print(num_divisors)


import math 
def div(n):
	cnt = 0
	for i in range(1, (int)(math.sqrt(n)) + 1):
		if (n % i == 0): 
			if (n / i == i) : 
				cnt+=1
			else: 
				cnt+=2
	return cnt
b=int(input())
if b==1:
	print (1)
else:
	print (div(b))

b = int(input())
result = 1
count = 1
while b % 2 == 0:
    count += 1
    b >>= 1
result *= count
count = 0
i = 3
while i * i <= b:
    if b % i == 0:
        count = 1
        while b % i == 0:
            count += 1
            b //= i
        result *= count
    i += 2
if b > 1:
    result *= 2
print(result)


b = int(input())
import math
k = math.ceil((b**0.5)) + 100
a = set()
for i in range(1, k):
    if (b%i == 0):
        a.add(i)
        a.add(b//i)
        
print(len(a))


from math import sqrt
def countDivisors(n):
    cnt=0
    for i in range(1,(int(sqrt(n)))+1):
        if(n%i==0):
            if(n/i==i):
                cnt = cnt + 1
            else:
                cnt = cnt + 2
    return cnt

n=int(input())
print(countDivisors(n))


import math
b=int(input())
ans=0
for i in range(1,int(math.sqrt(b))+1):
    if b%i==0:
        ans+=1
        c=b//i
        if i!=c:
            ans+=1
print(ans)


# Author:      Divesh Uttamchandani
# Institution: BITS Pilani
import math
n = int(input().strip())
factors = 0
for i in range(1,int(math.sqrt(n))+1):
    if(n%i==0):
        if(i!=n//i):
            factors+=2
        else:
            factors+=1
print(factors)
# <> with <3 using Termicoder:
# https://termicoder.github.io


a=int(input())
t=[0]
i=2
while i*i<=a:
    if a%i==0:
        t[len(t)-1]+=1
        a=a/i
    else:
        i=i+1
        if t[len(t)-1]!=0:
            t.append(0)
if a>1:
    if a!=i:
        t.append(1)
    else:
        t[len(t)-1]+=1
answer=1
for i in t:
    answer*=(i+1)
print(answer)



from math import sqrt, ceil

b = int(input())
cnt = 0

for j in range(1,int(sqrt(b))+1):
    if b%j==0:
        cnt += 1
        d = b//j
        if j != d:
            cnt += 1

print(cnt)

n = int(input())
i = 1
ans = 0
while i * i <= n:
    if n % i == 0:
        ans += 2
    i += 1
i -= 1
if i * i == n:
    ans -= 1
print(ans)

import math

def divisorGenerator(n):
    l_divisors = []
    for i in range(1, int(math.sqrt(n) + 1)):
        if n % i == 0:
            yield i
            if i*i != n:
                l_divisors.append(n / i)
    for divisor in reversed(l_divisors):
        yield divisor

n=int(input())
print(len(list(divisorGenerator(n))))


b=int(input())
i=1
sum0=0
while(i*i<=b):
    if(b%i==0):
        if(b==i*i): sum0+=1
        else: sum0+=2
    i+=1
print(sum0)