#include <bits/stdc++.h>
using namespace std;
const int N=1e6+2;
bool isp[N];
vector<int> prime;
void gen_prime(long long n){
memset(isp,true,sizeof(isp));
for(long long i=2;i<=n;++i){
if(isp[i]) prime.push_back(i);
for(int p:prime){
if(p*i>n) break;
isp[p*i]=false;
if(i%p==0) break;
}
}
}
bool isprime(int x){
if(x<2) return false;
for(int i=2;i*i<=x;i++){
if(x%i==0) return false;
}
return true;
}
int main()
{
int n;
gen_prime(1e6+1);
cin>>n;
while(n--){
long long t;
cin>>t;
if(isprime(t)){
cout<<t<<endl;
continue;
}
if(t==1){
cout<<1<<endl;
continue;
}
if(t==2){
cout<<2<<endl;
continue;
}
for(int i=0;i<=N;i++){
if(prime[i]>t) {
break;
}
if(t%prime[i]==0){
cout<<prime[i]<<" ";
t/=prime[i];
i=-1;
}
}
cout<<endl;
}
return 0;
}