#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll MAXN = 1000000;
vector<ll> spf(MAXN + 1); // spf[i] will store the smallest prime factor of i
void computeSPF() {
// Initialize spf for every number to itself
for (ll i = 2; i <= MAXN; i++) {
spf[i] = i;
}
// Start the sieve process
for (ll i = 2; i * i <= MAXN; i++) {
if (spf[i] == i) { // Check if i is prime
for (ll j = i * i; j <= MAXN; j += i) {
if (spf[j] == j) { // Update spf[j] to the smallest prime factor
spf[j] = i;
}
}
}
}
}
unordered_map <ll,ll> cl(ll vl){ unordered_map <ll,ll> a2;
while(vl!=1){
ll d = spf[vl]; a2[d]++;
vl = vl/d;
}
return a2;
}
int main() {ll n;cin>>n;
// Compute SPF for all numbers from 2 to MAXN
computeSPF();
ll b[n+1]={0};
for(ll i=1;i<=n;i++){
cin>>b[i];
unordered_map <ll,ll> a2 = cl(b[i]);
cout<<"for index i->";
for(auto itr = a2.begin();itr!=a2.end();++itr){
cout<<itr->first<<" "<<itr->second;
cout<<"\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKCmNvbnN0IGxsIE1BWE4gPSAxMDAwMDAwOwoKdmVjdG9yPGxsPiBzcGYoTUFYTiArIDEpOyAvLyBzcGZbaV0gd2lsbCBzdG9yZSB0aGUgc21hbGxlc3QgcHJpbWUgZmFjdG9yIG9mIGkKCnZvaWQgY29tcHV0ZVNQRigpIHsKICAgIC8vIEluaXRpYWxpemUgc3BmIGZvciBldmVyeSBudW1iZXIgdG8gaXRzZWxmCiAgICBmb3IgKGxsIGkgPSAyOyBpIDw9IE1BWE47IGkrKykgewogICAgICAgIHNwZltpXSA9IGk7CiAgICB9CgogICAgLy8gU3RhcnQgdGhlIHNpZXZlIHByb2Nlc3MKICAgIGZvciAobGwgaSA9IDI7IGkgKiBpIDw9IE1BWE47IGkrKykgewogICAgICAgIGlmIChzcGZbaV0gPT0gaSkgeyAvLyBDaGVjayBpZiBpIGlzIHByaW1lCiAgICAgICAgICAgIGZvciAobGwgaiA9IGkgKiBpOyBqIDw9IE1BWE47IGogKz0gaSkgewogICAgICAgICAgICAgICAgaWYgKHNwZltqXSA9PSBqKSB7IC8vIFVwZGF0ZSBzcGZbal0gdG8gdGhlIHNtYWxsZXN0IHByaW1lIGZhY3RvcgogICAgICAgICAgICAgICAgICAgIHNwZltqXSA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnVub3JkZXJlZF9tYXAgPGxsLGxsPiBjbChsbCB2bCl7IHVub3JkZXJlZF9tYXAgPGxsLGxsPiBhMjsKICAgIHdoaWxlKHZsIT0xKXsKICAgICAgICBsbCBkID0gc3BmW3ZsXTsgYTJbZF0rKzsKICAgICAgICB2bCA9IHZsL2Q7CiAgICB9CiAgICByZXR1cm4gYTI7Cn0KCmludCBtYWluKCkge2xsIG47Y2luPj5uOwogICAgLy8gQ29tcHV0ZSBTUEYgZm9yIGFsbCBudW1iZXJzIGZyb20gMiB0byBNQVhOCiAgICBjb21wdXRlU1BGKCk7CiAgICBsbCBiW24rMV09ezB9OwogICAgZm9yKGxsIGk9MTtpPD1uO2krKyl7CiAgICAgICAgY2luPj5iW2ldOwogICAgICAgIHVub3JkZXJlZF9tYXAgPGxsLGxsPiBhMiA9IGNsKGJbaV0pOwogICAgICAgIGNvdXQ8PCJmb3IgaW5kZXggaS0+IjsKICAgICAgICBmb3IoYXV0byBpdHIgPSBhMi5iZWdpbigpO2l0ciE9YTIuZW5kKCk7KytpdHIpewogICAgICAgICAgICBjb3V0PDxpdHItPmZpcnN0PDwiICI8PGl0ci0+c2Vjb25kOwogICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgIH0KICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAoKICAgIHJldHVybiAwOwp9Cg==