#include <iostream>
#include <fstream>
using namespace std;
const int p = 9973;
ofstream out("ssnd.out");
struct date{
unsigned apar ,el;
};
unsigned ridica(unsigned x, unsigned y)
{
unsigned r = 1;
while(y)
{
if(y % 2 == 1) r=r*x;
x = x*x;
y/=2;
}
return r;
}
unsigned det_nr_div(date *div , unsigned lg)
{
unsigned prod = 1;
for(unsigned i = 0 ; i<lg ; i++)
prod *= (div[i].apar +1);
return prod;
}
unsigned det_suma_div(date *div, unsigned lg)
{
unsigned elem =0 , prod = 1;
for(unsigned i = 0 ; i < lg ;i++)
{
elem = (ridica(div[i].el ,div[i].apar + 1) - 1) /(div[i].el - 1);
prod*=(elem % p);
}
return prod % p;
}
void find_div(unsigned long x)
{
date div[100];
unsigned lg_d = 0,apar = 0;
unsigned long d =2;
while(x != 1)
{
while(x%d != 0) d++;
apar = 0;
while(x && x%d == 0)
{
x/=d;
apar++;
}
div[lg_d].apar = apar;
div[lg_d++].el = d;
}
unsigned nr_div= det_nr_div(div,lg_d) , sum = det_suma_div(div, lg_d);
out<<nr_div<<' '<<sum<<'\n';
}
int main()
{
ifstream in("ssnd.in");
unsigned long x,t;
in>>t;
for(unsigned i = 0 ; i < t ;i++)
{
in>>x;
find_div(x);
}
return 0;
}