### constant

MAX_P = 10 ** 6

### subroutines

def gen_primes(max_p)
  primes = Array.new(max_p + 1){true}
  primes[0] = primes[1] = false

  s_max_p = Math.sqrt(max_p + 0.5).to_i

  for p in (2..s_max_p)
    if primes[p]
      for q in (p * p).step(max_p, p)
        primes[q] = false
      end
    end
  end

  primes
end

### main

primes = gen_primes(MAX_P)
pnums = (2..MAX_P).select{|p| primes[p]}
#p pnums.length; exit

loop do
  l = gets.to_i
  break if l == 0

  count = 1

  for pn in pnums
    break if l == 1

    f = 0
    while l % pn == 0
      l /= pn
      f += 1
    end

    if f > 0
      count *= ((f + 1) * 2 - 1)
    end
  end

  if l > 1
    count *= 3
  end

  puts (count + 1) / 2
end