#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> spf(1000001);
void solve(ll y){
unordered_map<ll, ll> mp;
while(y != 1){
ll d = spf[y];
mp[d]++;
y = y / d;
}
for(auto it : mp){
cout << it.first << "^" << it.second << "\n";
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
for(int i = 0; i < spf.size(); i++)
spf[i] = i;
for(int p = 2; p * p < spf.size(); p++){
if(spf[p] == p){
for(int i = p * p; i < spf.size(); i += p){
if(spf[i] == i) spf[i] = p;
}
}
}
ll n;
cin >> n;
vector<ll> arr(n);
for(ll i = 0; i < n; i++){
cin >> arr[i];
}
for(ll i = 0; i < n; i++)
solve(arr[i]);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp2ZWN0b3I8aW50PiBzcGYoMTAwMDAwMSk7Cgp2b2lkIHNvbHZlKGxsIHkpewogICAgdW5vcmRlcmVkX21hcDxsbCwgbGw+IG1wOwogICAgd2hpbGUoeSAhPSAxKXsKICAgICAgICBsbCBkID0gc3BmW3ldOwogICAgICAgIG1wW2RdKys7CiAgICAgICAgeSA9IHkgLyBkOwogICAgfQogICAgZm9yKGF1dG8gaXQgOiBtcCl7CiAgICAgICAgY291dCA8PCBpdC5maXJzdCA8PCAiXiIgPDwgaXQuc2Vjb25kIDw8ICJcbiI7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgc3BmLnNpemUoKTsgaSsrKQogICAgICAgIHNwZltpXSA9IGk7CiAgICAgICAgCiAgICBmb3IoaW50IHAgPSAyOyBwICogcCA8IHNwZi5zaXplKCk7IHArKyl7CiAgICAgICAgaWYoc3BmW3BdID09IHApewogICAgICAgICAgICBmb3IoaW50IGkgPSBwICogcDsgaSA8IHNwZi5zaXplKCk7IGkgKz0gcCl7CiAgICAgICAgICAgICAgICBpZihzcGZbaV0gPT0gaSkgc3BmW2ldID0gcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgbGwgbjsKICAgIGNpbiA+PiBuOwogICAgdmVjdG9yPGxsPiBhcnIobik7CiAgICBmb3IobGwgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGNpbiA+PiBhcnJbaV07CiAgICB9CiAgICBmb3IobGwgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgc29sdmUoYXJyW2ldKTsKICAgICAgICAKICAgIHJldHVybiAwOwp9