#include<bits/stdc++.h>
using namespace std;
const int maxi=1e6+7;
#define ll long long
ll prime[maxi];
int vis[maxi];
int cnt=0;
void init()
{
	for(int i=2;i<maxi;i++)
		vis[i]=1;
	for(int i=2;i<maxi;i++)
	{
		if(vis[i])
			prime[++cnt]=i;
		for(int j=1;j<=cnt&&i*prime[j]<maxi;j++)
		{
			vis[i*prime[j]]=false;
			if(i%prime[j]==0)
				break;
		}
	}
}
int main()
{
	init();
	int t;
	cin>>t;
	while(t--)
	{
		ll n;
		scanf("%lld",&n);
		ll temp=n;
		ll maxn=0,tag=0;
		for(int i=1;prime[i]*prime[i]<=temp&&i<=cnt;i++)
		{
			int num=0;
			while(temp%prime[i]==0)
			{
				temp/=prime[i];
				num++;
			}
			if(num>maxn)
			{
				maxn=num;
				tag=prime[i];
			}
		}
		if(temp==n)
			printf("1\n%lld\n",n);
		else
		{
			printf("%lld\n",maxn);
			for(int i=1;i<maxn;i++)
			{
				printf("%lld ",tag);
				n/=tag;
			}
			printf("%lld\n",n);
		}
	}
		
	return 0;
}