#include <cstdio>
using namespace std;
#define MAX 1000000
#define RMAX 1000
int v[MAX], t, n, np;
long long s, nd, x, flad, fact;
void ciur();
int main()
{
int i, p;
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
ciur();
while(t--){
scanf("%lld", &x);
s = 1; nd = 1;
for(i=1; x>1; i++){
p = 0; flad = 1, fact = 1;
if(v[i]*v[i]>x){
nd *= 2;
s *= (x+1);
x = 1;
}
while(x%v[i]==0){
p++;
flad = flad*v[i];
fact += flad;
x = x/v[i];
}
nd *= (p+1);
s *= fact;
}
printf("%lld %lld\n", nd, s);
}
return 0;
}
void ciur(){
int i, j;
v[++np] = 2;
for(i=3; i<RMAX; i++)
if(!v[i]){
for(j=i*i; j<MAX; j=j+i+i)
v[j] = 1;
v[++np] = i;
}
for(i=RMAX+1; i<MAX; i=i+2)
if(!v[i])
v[++np] = i;
v[np+1] = MAX+1;
}