/**求64-bit的所有素因子,c++下提交超时额*/#include "stdio.h"#include <ctime>#include <cstdlib>#include <vector>#include <cmath>using namespace std;#define I64 __int64#define MAXN 10#define MK make_pairI64 minn;I64 multi(I64 a,I64 b,I64 n){ I64 temp=a%n,s=0LL; while(b){ if(b&1LL)s=(s+temp)%n; temp=(temp+temp)%n; b>>=1; } return s;}I64 Pow(I64 a,I64 b,I64 n){ I64 temp=a%n,s=1LL; while(b){ if(b&1LL)s=multi(s,temp,n); temp=multi(temp,temp,n); b>>=1; } return s;}I64 Pow2(I64 a,I64 b){ I64 s = 1LL; for(int i = 0; i < b; ++i) s *= a; return s;}int witness(I64 a,I64 n){ I64 u=n-1LL,t=0LL,i,x,y; while(!(u&1LL))u>>=1,t++; x=Pow(a,u,n); for(i=1;i<=t;i++){ y=multi(x,x,n); if(y==1LL&&x!=1LL&&x!=n-1LL)return 1; x=y; } if(x!=1LL)return 1; return 0;}int test(I64 n){ I64 a; int i; if(n==2LL)return 1; if(n<2LL||!(n&1ll))return 0; for(i=0;i<MAXN;i++){ a=(I64)rand()%(n-2)+2; if(witness(a,n))return 0; } return 1;}I64 gcd(I64 a,I64 b){ return b?gcd(b,a%b):a;}I64 pollard_rho(I64 n,I64 c){ I64 x,y,d,i=1LL,k=2LL; //srand((I64)time(NULL)); x=((I64)rand())%(n-1LL)+1LL; y=x; while(1){ ++i; x=(multi(x,x,n)+c)%n; d=gcd(y-x+n,n); if(d!=1&&d!=n)return d; if(x==y)return n; if(i==k){ y=x; k<<=1; } }}void find(I64 n,I64 c = 70ll){ I64 r; if(n<=1LL) return ; if(test(n)){ if(minn>n)minn=n; return ; } r=pollard_rho(n,c--); find(n/r,c); find(r,c);}//vector<pair<int,int> >vec;I64 top;I64 vec[1000000][2];I64 pri[] = {2,3,5,7,11,13,17,19,23,29};int main(){ I64 n,ans,cnt; int t,i; scanf("%d",&t); while(t--){ top = 0; scanf("%I64d",&n); //vec.clear(); for(i = 0; i < 10; ++i) { cnt = 0; while(n % pri[i] == 0) { ++cnt; n /= pri[i]; } if(cnt) vec[top][0] = pri[i],vec[top++][1] = cnt; //vec.push_back(MK(pri[i],cnt)); } while(n!=1){ minn=n; find(n); cnt =0; while(n % minn == 0) { ++cnt; n /= minn; } //vec.push_back(MK(minn,cnt)); vec[top][0] = minn,vec[top++][1] = cnt; } ans = 0; //int len = vec.size(); if(top == 1) //vec[0].second--; vec[0][1] --; for(i = 0; i < top; ++i) //ans += Pow2(vec[i].first,vec[i].second); ans += Pow2(vec[i][0],vec[i][1]); printf("%I64d %I64d\n",top,ans); } return 0;}