n=int(eval(input()))



int_sqrt=lambda x:int(x**0.5)+1

def prime_factor(x):

  d={}

  for i in p:

    while x%i<1:

      x//=i

      d[i]=d.get(i,0)+1

    if x<2: break

  if x>1: d[x]=1

  return d



p=list(range(2,int_sqrt(n)))

d=prime_factor(n)

a=0

for i in list(d.values()):

  t=c=0

  while t+c<i: c+=1; t+=c

  a+=c

print(a)
n=int(eval(input()))

d={2:0}

while n%2<1:  n//=2;  d[2]+=1

for i in range(3,int(n**0.5)+1,2):

  while n%i<1:  n//=i;  d[i]=d.get(i,0)+1

  if n<2: break

if n>1: d[n]=1

a=0

for i in list(d.values()):

  t=c=0

  while t+c<i: c+=1; t+=c

  a+=c

print(a)
n = int(eval(input()))
int_sqrt = lambda x: int(x**0.5) + 1


def prime_factor(x):
    d = {}
    for i in p:
        while x % i < 1:
            x //= i
            d[i] = d.get(i, 0) + 1
        if x < 2:
            break
    if x > 1:
        d[x] = 1
    return d


p = list(range(2, int_sqrt(n)))
d = prime_factor(n)
a = 0
for i in list(d.values()):
    t = c = 0
    while t + c < i:
        c += 1
        t += c
    a += c
print(a)

n = int(eval(input()))
d = {2: 0}
while n % 2 < 1:
    n //= 2
    d[2] += 1
for i in range(3, int(n**0.5) + 1, 2):
    while n % i < 1:
        n //= i
        d[i] = d.get(i, 0) + 1
    if n < 2:
        break
if n > 1:
    d[n] = 1
a = 0
for i in list(d.values()):
    t = c = 0
    while t + c < i:
        c += 1
        t += c
    a += c
print(a)

-int_sqrt = lambda x: int(x**0.5) + 1 - - -def prime_factor(x): -    d = {} -    for i in p: -        while x % i < 1: -            x //= i -            d[i] = d.get(i, 0) + 1 -        if x < 2: -            break -    if x > 1: -        d[x] = 1 -    return d - - -p = list(range(2, int_sqrt(n))) -d = prime_factor(n) +d = {2: 0} +while n % 2 < 1: +    n //= 2 +    d[2] += 1 +for i in range(3, int(n**0.5) + 1, 2): +    while n % i < 1: +        n //= i +        d[i] = d.get(i, 0) + 1 +    if n < 2: +        break +if n > 1: +    d[n] = 1