#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;
computeSPF(); // Compute SPF for all numbers from 2 to MAXN
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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKCmNvbnN0IGxsIE1BWE4gPSAxMDAwMDAwOwoKdmVjdG9yPGxsPiBzcGYoTUFYTiArIDEpOyAvLyBzcGZbaV0gd2lsbCBzdG9yZSB0aGUgc21hbGxlc3QgcHJpbWUgZmFjdG9yIG9mIGkKCnZvaWQgY29tcHV0ZVNQRigpIHsKICAgIC8vIEluaXRpYWxpemUgc3BmIGZvciBldmVyeSBudW1iZXIgdG8gaXRzZWxmCiAgICBmb3IgKGxsIGkgPSAyOyBpIDw9IE1BWE47IGkrKykgewogICAgICAgIHNwZltpXSA9IGk7CiAgICB9CgogICAgLy8gU3RhcnQgdGhlIHNpZXZlIHByb2Nlc3MKICAgIGZvciAobGwgaSA9IDI7IGkgKiBpIDw9IE1BWE47IGkrKykgewogICAgICAgIGlmIChzcGZbaV0gPT0gaSkgeyAvLyBDaGVjayBpZiBpIGlzIHByaW1lCiAgICAgICAgICAgIGZvciAobGwgaiA9IGkgKiBpOyBqIDw9IE1BWE47IGogKz0gaSkgewogICAgICAgICAgICAgICAgaWYgKHNwZltqXSA9PSBqKSB7IC8vIFVwZGF0ZSBzcGZbal0gdG8gdGhlIHNtYWxsZXN0IHByaW1lIGZhY3RvcgogICAgICAgICAgICAgICAgICAgIHNwZltqXSA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnVub3JkZXJlZF9tYXAgPGxsLGxsPiBjbChsbCB2bCl7CiAgICB1bm9yZGVyZWRfbWFwIDxsbCxsbD4gYTI7CiAgICB3aGlsZSh2bCE9MSl7CiAgICAgICAgbGwgZCA9IHNwZlt2bF07IGEyW2RdKys7CiAgICAgICAgdmwgPSB2bC9kOwogICAgfQogICAgcmV0dXJuIGEyOwp9CgppbnQgbWFpbigpIHsKICAgIGxsIG47CiAgICBjaW4+Pm47CiAgICBjb21wdXRlU1BGKCk7ICAvLyBDb21wdXRlIFNQRiBmb3IgYWxsIG51bWJlcnMgZnJvbSAyIHRvIE1BWE4KICAgIGxsIGJbbisxXT17MH07CiAgICBmb3IobGwgaT0xO2k8PW47aSsrKXsKICAgICAgICBjaW4+PmJbaV07CiAgICAgICAgdW5vcmRlcmVkX21hcCA8bGwsbGw+IGEyID0gY2woYltpXSk7CiAgICAgICAgY291dDw8ImZvciBpbmRleCBpLT4iOwogICAgICAgIGZvcihhdXRvIGl0ciA9IGEyLmJlZ2luKCk7aXRyIT1hMi5lbmQoKTsrK2l0cil7CiAgICAgICAgICAgIGNvdXQ8PGl0ci0+Zmlyc3Q8PCIgIjw8aXRyLT5zZWNvbmQ7CiAgICAgICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgfQogICAgcmV0dXJuIDA7Cn0K