#include <fstream>
#include <vector>
using namespace std;
ifstream is("ssnd.in");
ofstream os("ssnd.out");
#define MOD 9973
int T;
long long N;
bool prim[1000005];
vector<int> Prime;
void Sieve();
void Solve();
int Pow(int a, int b);
int main()
{
is >> T;
Sieve();
for ( int i = 1; i <= T; ++i )
Solve();
return 0;
}
void Sieve()
{
for (int i = 2; i <= 1000000; ++i )
{
if ( prim[i] == false )
{
Prime.push_back(i);
for ( int j = 2 * i; j <= 1000000; j += i )
prim[j] = true;
}
}
}
void Solve()
{
is >> N;
int Sol1(1), Sol2(1);
int nrd;
for ( int i = 0; i < Prime.size(); ++i )
{
if ( N == 1 )
break;
if ( N % Prime[i] != 0 )
continue;
nrd = 0;
while ( N % Prime[i] == 0 )
{
N /= Prime[i];
nrd++;
}
Sol1 *= (nrd+1);
Sol2 *= ( (Pow(Prime[i],nrd+1)-1)%MOD * Pow(Prime[i]-1,MOD-2)%MOD ) ;
if ( Sol2 >= MOD )
Sol2 %= MOD;
}
os << Sol1 << " " << Sol2 << '\n';
}
int Pow(int a, int b)
{
int aux;
if ( b == 0 )
return 1;
aux = Pow(a,b/2);
aux = (1ll * aux * aux)%MOD;
if ( b % 2 == 1 )
aux = (1ll*aux*a)%MOD;
return aux;
}