#include <stdio.h>
#include <string.h>
#define Maxn 1000000

long long a[2*Maxn+10];
long long prim[2*Maxn+10];
long long d[2*Maxn+10];

int main () {
	long long n, i, j;
	long long tot = 1;
	memset(a,0,sizeof(a));
	for (i = 2; i < 2*Maxn; i++) {
		if (a[i] == 0) {
			prim[tot++] = i;
			for (j = 2; i*j <= Maxn; j++) {
				a[i*j] = 1;
			}
		}
	}
	while (scanf("%lld", &n), n){
        d[0] = 0;
		for (i = 1; i < tot; i++) {
            if (n == 1)
               break;
			long long sum = 0;
			while ( n%prim[i] == 0) {
				n /= prim[i]; 
				sum++;
			}
			d[i] = sum+d[i-1]*(2*sum+1);
		}
		long long ans = 0;
		if (n != 1 && n <= prim[tot-1])
		   while (1);
        if (n != 1) {
            ans = 1+d[i-1]*3;
		}
		else {
			ans = 1+d[i-1];
		}
		printf("%lld\n", ans);
    }
	return 0;
}