#include<bits/stdc++.h>
using namespace std;
int n;
void divide(int u) //找出其质因数分解式
{
for(int i = 2;i <= u/i;i++) //遍历所有小于sqrt(u)的质因数
{//此处理论上枚举的是所有因数,
if(u%i == 0)//但在这个判断条件之后,实际能枚举到的却是所有质因数,
{ //因为i之前枚举到的所有质因数都被除掉了,所以如果能进入if判断,i一定为当前最小的质因数
int s = 0; //记录能被该质因数整除的次数
while(u%i== 0)
{
u /= i;
s++;
}
cout << i <<" " << s << endl;
}
}
if(u > 1) //特判一下大于sqrt(u)的情况
{//解读:sqrt(u)之前的所有质因数都除完了,可是还是u大于1,说明还存在有质因数没有
cout << u << " " << 1 << endl; //分解出来,则此时的u是那最后一个质因数
}
puts(" ");
}
int main()
{
cin >> n;
for(int i = 0;i<n;i++)
{
int m = 0;
cin >> m;
divide(m);
}
return 0;
}