//由算数基本定理可知,对于一个大于的正整数可以分解质因数:
//n=p1^a1×p2^a2×p3^a3*…*pk^ak
//则由约数个数定理可知的正约数有个
//(a1+1)(a2+1)(a3+1)…(ak+1)
//1.筛法求质因子          initial()
//2.质因子(指数+1)相乘    answer *= exponent + 1;
//3.if (number >1) {       //说明有一个大于根号n的因子 ,一个质因子是一次方,1+1=2,故乘2.
//       answer *= 2;
//   }
#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;
const int maxn = 4e4;
bool isprime[maxn];
vector<int>prime;

void initial() {
    for (int i = 0; i < maxn; i++) {
        isprime[i] = true;
    }
    isprime[0] = false;
    isprime[1] = false;
    for (int i = 2; i < maxn; i++) {
        if (!isprime[i]) {
            continue;
        }
        prime.push_back(i);
        for (int j = i * i; j < maxn; j += i) {
            isprime[j] = false;
        }
    }
}

int numberofprimefactor(int number) {
    //int answer = 0;
    int answer = 1;
    for (int i = 0; i < prime.size(); i++) {
        int factor = prime[i];
        if (number < factor) {
            break;
        }
        int exponent = 0;
        while (number % factor == 0) {
            exponent++;
            number /= factor;
            //printf("num:%d\n", number);
            //printf("yingzi:%d\n", factor);

        }
        //answer += exponent;
        answer *= exponent + 1;
    }
    if (number >1) {       //说明有一个大于根号n的因子 ,一个质因子是一次方,1+1=2,故乘2.
        //answer += 1;
        answer *= 2;
    }
    return answer;
}


int main() {

    initial();//shai fa
    int n;
    while(scanf("%d", &n)!=EOF){
		  for (int i = 0; i < n; i++) {
              int number;
              scanf("%d", &number) ;
              printf("%d\n", numberofprimefactor(number));
         }
	}
    return 0;
}