#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const int MAX=1000000;
const int MOD=9973;
vector <int> prime;
bool ciur[MAX+1];
void ciurul()
{
fill(ciur+2,ciur+MAX+1,1);
for(int i=2; i*i<=MAX; i++){
if(ciur[i]){
for(int j=i*i; j<=MAX; j+=i){
ciur[j]=0;
}
}
}
for(int i=2; i<=MAX; i++){
if(ciur[i]){
prime.push_back(i);
}
}
}
int main()
{
ciurul();
int t;
cin >> t;
while(t--){
long long n;
cin >> n;
long long nr=1;
long long sum=1;
for(int p : prime){
if(1LL*p*p>n){
break;
}
if(n%p==0){
int cnt=0;
long long ex=1;
long long s=1;
int mod=p%MOD;
while(n%p==0){
cnt++;
n/=p;
ex=(ex*mod)%MOD;
s=(s+ex)%MOD;
}
nr*=(cnt+1);
sum=(sum*s)%MOD;
}
}
if(n>1){
nr*=2;
long long s=(1+(n%MOD))%MOD;
sum=(sum*s)%MOD;
}
cout << nr << " " << sum << '\n';
}
}