#include <fstream>
using namespace std;
bool prim[1001];
void Ciur();
unsigned long long power(int b, int e)
{
if (e == 0) return 1;
unsigned long long P = power(b, e / 2) * power(b, e / 2);
if (e % 2 == 0) return P;
else
return b * P;
}
int main()
{
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
int t, nd;
unsigned long long n, Sd;
Ciur();
cin >> t;
for (; t; --t)
{
cin >> n;
Sd = 1; nd = 1;
int d = 2;
unsigned long long x = n;
while (n > 1 && d * d <= x)
{
if (prim[d])
{
int cnt = 0;
while (n % d == 0)
{
n /= d;
cnt++;
}
nd *= (cnt + 1);
Sd *= ((power(d, cnt + 1) - 1) / (d - 1));
}
if (d == 2) d = 3;
else d += 2;
}
if (n != 1)
cout << 2 << ' ' << (n + 1) % 9973 << '\n';
else
cout << nd << ' ' << Sd % 9973<< '\n';
}
}
void Ciur()
{
for (int i = 2; i <= 1000; ++i)
prim[i] = 1;
for (int i = 2; i <= 32; ++i)
for (int j = 2; i * j <= 1000; ++j)
prim[i * j] = 0;
}