#include<bits/stdc++.h>
using namespace std;
#define int long long int
const int MAXN = 1e6 ;
vector< int > spf( MAXN + 1 , 0 ) ;
void computeSpf( ) {
for ( int i = 2 ; i <= MAXN; i++ ) {
spf[ i] = i;
}
// starting the sieve process
for ( int i = 2 ; i * i <= MAXN; i++ ) {
if ( spf[ i] == i) {
for ( int j = i* i; j <= MAXN; j + = i) {
if ( spf[ j] == j) {
spf[ j] = i;
}
}
}
}
}
unordered_map< int , int > calFactors( int n) {
unordered_map< int , int > mp;
while ( n ! = 1 ) {
int d = spf[ n] ;
mp[ d] ++ ;
n / = d;
}
return mp;
}
signed main( ) {
ios_base:: sync_with_stdio ( 0 ) ;
cin .tie ( 0 ) ; cout .tie ( 0 ) ;
// int t; cin >> t;
// while (t--) {
// solve();
// }
computeSpf( ) ;
int n; cin >> n;
vector< int > input( n) ;
for ( int i = 0 ; i < n; i ++ ) {
cin >> input[ i] ;
unordered_map< int , int > factors = calFactors( input[ i] ) ;
cout << "power of factors of " << input[ i] << " are: " << '\n ' ;
for ( auto i : factors) {
cout << i.first << " " << i.second << '\n ' ;
}
cout << '\n ' ;
}
return 0 ;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nIGludAoKY29uc3QgaW50IE1BWE4gPSAxZTY7CnZlY3RvcjxpbnQ+IHNwZihNQVhOICsgMSwgMCk7Cgp2b2lkIGNvbXB1dGVTcGYoKXsKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IE1BWE47IGkrKyl7CiAgICAJc3BmW2ldID0gaTsKICAgIH0KICAgIAogICAgLy8gc3RhcnRpbmcgdGhlIHNpZXZlIHByb2Nlc3MKICAgIAogICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDw9IE1BWE47IGkrKyl7CiAgICAJaWYoc3BmW2ldID09IGkpewogICAgCQlmb3IgKGludCBqID0gaSppOyBqIDw9IE1BWE47IGogKz0gaSl7CiAgICAJCQlpZihzcGZbal0gPT0gail7CiAgICAJCQkJc3BmW2pdID0gaTsKICAgIAkJCX0KICAgIAkJfQogICAgCX0KICAgIH0KICAgIAp9Cgp1bm9yZGVyZWRfbWFwPGludCwgaW50PiBjYWxGYWN0b3JzKGludCBuKXsKCXVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IG1wOwoJCgl3aGlsZShuICE9IDEpewoJCWludCBkID0gc3BmW25dOwoJCW1wW2RdKys7CgkJbiAvPSBkOwoJfQoJCglyZXR1cm4gbXA7Cn0KCgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIAogICAgLy8gaW50IHQ7IGNpbiA+PiB0OwogICAgLy8gd2hpbGUgKHQtLSkgewogICAgLy8gICAgIHNvbHZlKCk7CiAgICAvLyB9CiAgICBjb21wdXRlU3BmKCk7CiAgICBpbnQgbjsgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBpbnB1dChuKTsKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpICsrKXsKICAgIAljaW4gPj4gaW5wdXRbaV07CiAgICAJCiAgICAJdW5vcmRlcmVkX21hcDxpbnQsIGludD4gZmFjdG9ycyA9IGNhbEZhY3RvcnMoaW5wdXRbaV0pOwogICAgCQogICAgCWNvdXQgPDwgInBvd2VyIG9mIGZhY3RvcnMgb2YgIiA8PCBpbnB1dFtpXSA8PCAiIGFyZTogIiA8PCAnXG4nOwogICAgCWZvciAoYXV0byBpIDogZmFjdG9ycyl7CiAgICAJCWNvdXQgPDwgaS5maXJzdCA8PCAiICIgPDwgaS5zZWNvbmQgPDwgJ1xuJzsKICAgIAl9CiAgICAJY291dCA8PCAnXG4nOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==