#include<bits/stdc++.h>
using namespace std;


#define MOD 1000000000007
#define endl ("\n")
#define mp make_pair
#define f first
#define se second
#define pb push_back
#define ms memset
#define clr(x) memset(x, 0, sizeof(x))
#define rep(i,l,r)  for(i=l ; i<=r ; i++)
#define rrep(i,l,r) for(i=r ; i>=l ; i--)
#define trav(it, a) for(auto it = a.begin(); it != a.end(); it++)
#define all(x) x.begin(), x.end()
#define PI 3.1415926535897932384626
#define precise(x) cout << fixed << setprecision(6) << x
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

ll expo (ll x, ll y) {ll res = 1; while (y) {if (y & 1)res = res * x; res %= MOD; y = y >> 1; x = x * x; x %= MOD;} return res;}
ll minn(ll a,ll b) {return (a>b)?b:a;}
ll maxx(ll a,ll b) {return (a>b)?a:b;}
ll smod(ll a,ll md=MOD) {a=a%md; if(a<0)a+=md; return a;}

void solve(){
	ll n;
	cin>>n;
	map<ll,int> fre;
	ll temp=n;
	fre[n]=1;
	for(ll i=2;i*i<=n;i++){
	
		while(n%i==0){
			fre[i]++;
			n/=i;
		}
	}
	ll max_fac;
	int max_count=0;
	for(auto a: fre){
		if(a.se>max_count){
			max_count= a.se;
			max_fac= a.f;
		}
	}
	int i;
	cout<<max_count<<"\n";
	rep(i,1,max_count-1){
		cout<<max_fac<<"\n";
	}
	cout<<temp/expo(max_fac,max_count-1)<<"\n";
}

int main() 
{
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin); 
	freopen("output.txt", "w", stdout);
#endif
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);

int t = 1;
cin >> t;
while(t--) {
	solve();
}
return 0;
}
