#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MAXN = 1000005;
const int MODULO = 9973;
bool neprim[MAXN];
int prime[MAXN];
int nr_prime;
void ciur()
{
for (int i = 2;i < MAXN;++i)
if (!neprim[i])
{
prime[++nr_prime] = i;
for (int j = i + i;j < MAXN;j += i)
neprim[j] = true;
}
}
int putere(int a, int b)
{
int rasp = 1;
a %= MODULO;
while(b != 0)
{
if (b % 2 == 1)
{
rasp *= a;
rasp %= MODULO;
}
a *= a;
a %= MODULO;
b /= 2;
}
return rasp;
}
void test()
{
long long n;
in >> n;
int nrdiv = 1, sumdiv = 1;
for (int i = 1;i <= nr_prime && (long long)prime[i] * prime[i] <= n;++i)
{
if (n % prime[i] != 0)
continue;
int p = 0;
while(n % prime[i] == 0)
{
++p;
n /= prime[i];
}
nrdiv *= p + 1;
int p1 = (putere(prime[i], p + 1) - 1) % MODULO;
int p2 = putere(prime[i] - 1, MODULO - 2) % MODULO;
sumdiv = ( ( (sumdiv * p1) % MODULO ) * p2) % MODULO;
}
if (n > 1)
{
nrdiv *= 2;
sumdiv = ((long long)sumdiv * (n + 1)) % MODULO;
}
out << nrdiv << ' ' << sumdiv << '\n';
}
int main()
{
ciur();
int t;
in >> t;
while(t > 0)
{
test();
--t;
}
return 0;
}