#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MOD = 9973;
const int NMAX = 1000005;
long long t, n, r1, r2, prim[NMAX], k;
bool ciur[NMAX];
void ciur_er()
{
long long i,j;
for(i=2; i<NMAX; i++)
{
if(!ciur[i])
{
prim[++k]=i;
for(j=i+i; j<=NMAX; j+=i)
ciur[j]=true;
}
}
}
void inv_mod(long long &x, long long &y, long long a, long long b)
{
if(!b)
{
x=1;
y=0;
}
else
{
inv_mod(x, y, b, a%b);
swap(x, y);
y -= x * (a/b);
}
}
long long turn_to_inv(long long x)
{
long long inv = 0, ins;
inv_mod(inv, ins, x, MOD);
inv %= MOD;
if(inv <= 0)
inv = MOD + inv % MOD;
return ((long long) inv);
}
long long effpower(long long x, long long y)
{
if(x == 0)
return 0;
else if(y == 0)
return 1;
else
{
long long result = effpower(x, (y >> 1));
if((y & 1) == 0)
return (result * result) % MOD;
else
return (((result * result) % MOD) * x) % MOD;
}
}
// nr div: (d1 + 1)*(d2 + 1)*...*(dk+1)
// sdiv : p^(e+1)-1 /(p -1)
void decompose(long long a)
{
long long exp = 0;
if(a%2 == 0)
{
while(a%2 == 0)
{
a /= 2;
exp++;
}
r1 *= (exp + 1);
long long factor = effpower(2, exp + 1) - 1;
if(factor < 0)
factor = MOD + factor % MOD;
r2 = (r2 * factor) % MOD;
}
long long j = 2;
while(prim[j] * prim[j]<= a)
{
exp = 0;
long long i = prim[j];
while(a%i == 0)
{
a /= i;
exp++;
}
if(0 < exp)
{
r1 *= (exp + 1);
if((i-1) % MOD == 0)
{
r2 = (r2 * (exp+1)) % MOD;
}
else
{
long long factor = effpower(i % MOD, exp + 1) - 1;
if(factor < 0)
factor = MOD + factor % MOD;
r2 = (r2 * factor) % MOD;
r2 = (r2 * turn_to_inv(i - 1)) % MOD;
}
}
j++;
}
if(1 < a)
{
r1 *= 2;
if((a - 1) % MOD == 0)
{
r2 = (r2 * (2)) % MOD;
}
else
{
long long factor = effpower(a, 2) - 1;
if(factor < 0)
factor = MOD + factor % MOD;
r2 = (r2 * factor) % MOD;
r2 = (r2 * turn_to_inv(a - 1)) % MOD;
}
}
}
int main()
{
ciur_er();
in >> t;
for(long long i = 1; i <= t; i++)
{
in >> n;
r1=r2=1;
decompose(n);
out << r1 << ' ' << r2 << '\n';
}
return 0;
}