#include <bits/stdc++.h>
using namespace std;
const int MAXP=10e6+100;
#define MAXN 1001
#define MOD 9973
int t,n;
int prime[MAXP];
bitset<MAXP>prim;
int indice=1;
void ciur() {
prim[2]=0;
prime[1]=2;
for(int i=3;i<=MAXP;i++){
if(!prim[i]){
prime[++indice]=i;
for(int j=3*i;j<=MAXP;j+=2*i)
prim[j]=1;
}
}
}
int lgpow(int b,int e){
if(e==0) return 1;
if(e&1==0){
b=(1LL*b*b)%MOD;
return lgpow(b,e/2);
}
return (1LL*b*lgpow(b,e-1))%MOD;
}
#define invMod(a) lgpow(a,MOD-2)
void solve(int n) {
int nrDiv=1,sumaDiv=1;
int exponent,nrP=0;
for(int p=1; p<=indice;p++){
if(prime[p]*prime[p] > n)
break;
if(n % prime[p] == 0){
nrP=prime[p];
exponent=0;
while(n%prime[p]==0){
exponent++;
n/=prime[p];
}
sumaDiv*=(lgpow(nrP,exponent+1)-1)%MOD;
sumaDiv*=(invMod(nrP-1))%MOD;
nrDiv*=(exponent+1);
}
}
if(n > 1){
nrDiv*=2; // dk+1
sumaDiv*=(n+1)%MOD;
}
printf("%d %d\n",nrDiv,sumaDiv);
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d",&t);
ciur();
int s;
while(t--) {
s=0;
scanf("%d",&n);
solve(n);
}
return 0;
}