#include <bits/stdc++.h>
using namespace std;
int n, a;
signed main(){
scanf("%d", &n);
while(n--){
scanf("%d", &a);
for(int i = 2; i <= a / i; ++i){
if(a % i == 0){
int cnt = 0;
while(a % i == 0){
++cnt;
a /= i;
}
printf("%d %d\n", i, cnt);
}
}
if(a > 1) printf("%d %d\n\n", a, 1);
else printf("\n");
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, cnt;
int prime[N];
bool st[N];
void get_primes(){
for(int i = 2; i <= n; ++i){
if(!st[i]) prime[cnt++] = i;
for(int j = 0; prime[j] <= n / i; ++j){
int t = prime[j] * i;
st[t] = true;
if(i % prime[j] == 0) break;
}
}
}
signed main(){
scanf("%d", &n);
get_primes();
printf("%d\n", cnt);
return 0;
}