#include <bits/stdc++.h>
using namespace std;
ifstream fin( "ssnd.in" );
ofstream fout( "ssnd.out" );
const int PMAX = 1e6;
const int MOD = 9973;
bitset <PMAX + 1> ciur;
vector <int> prime;
int lgput( int a, int b ) {
int p = 1;
while ( b ) {
if ( b % 2 ) {
p = (long long)p * a % MOD;
}
a = (long long)a * a % MOD;
b /= 2;
}
return p;
}
int inv( int a ) {
return lgput( a, MOD - 2 );
}
void solve() {
long long n;
fin >> n;
long long sum = 1, cnt = 1;
for ( auto p : prime ) {
int d = 0;
while ( n % p == 0 ) {
d ++;
n /= p;
}
if ( d > 0 ) {
cnt = cnt * (d + 1) % MOD;
sum = sum = sum * (long long)(lgput( p, d + 1 ) - 1) * inv(p - 1) % MOD
}
}
fout << cnt << ' ' << sum << '\n';
}
int main() {
int t;
ciur[0] = ciur[1] = 1;
for ( int i = 2; i * i <= PMAX; i ++ ) {
if ( !ciur[i] ) {
for ( int j = i * i; j <= PMAX; j += i ) {
ciur[i] = true;
}
}
}
for ( int i = 2; i <= PMAX; i ++ ) {
if ( !ciur[i] ) {
prime.push_back( i );
}
}
fin >> t;
while ( t-- ) solve();
return 0;
}