#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
#define mem(a, b) memset(a, b, sizeof(a));
bool IsPrime[100010] = {0};
int p[100010];
struct factor{
int x, cnt;//x为质因子,cnt为其个数
}fac[100];
int pNum;
void FindPrime(){
pNum = 0;
IsPrime[1] = 1;
for(int i = 2; i <= 100000; i++){
if(!IsPrime[i]){
p[pNum++] = i;
for(int j = i * i; j <= 100000; j += i){
IsPrime[j] = 1;
}
}
}
}
int main(){
FindPrime();
int n;
scanf("%d", &n);
int a[1010];
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
for(int i = 0; i < n; i++){
int t = a[i];
int sqr = (int)sqrt(1.0 * t);
int num = 0;
for(int j = 0; j < pNum && p[j] <= sqr; j++){
if(t % p[j] == 0){
fac[num].x = p[j];
fac[num].cnt = 0;
while(t % p[j] == 0){
t /= p[j];
fac[num].cnt++;
}
num++;
}
if(t == 1) break;
}
if(t != 1){
fac[num].x = t;
fac[num++].cnt = 1;
}
int ans = 1;
for(int k = 0; k < num; k++){
ans = ans * (fac[k].cnt + 1);
}
printf("%d\n", ans);
}
return 0;
}