/** Hanabi?
**                                .
**                              .'
**                            .'
**                            /`-._'
**                           /   /
**                          /   /
**                         /   /
**                        (`-./
**                         )
**                        '       .
**                              .'
**                            .'
**                            /`-._'
**                           /   /
**                          /   /
**                         /   /
**                        (`-./
**                         )
**                        '
**/
//Kaicho Shirogane Miyuki
//Grieveous lady Shinomiya Kaguya
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define MOD 1000000007
#define len(x) x.size()
#define min3(a, b, c) min(a, min(b, c))
#define max3(a, b, c) max(a, max(b, c))
#define all(v) v.begin(), v.end()
#define allr(v) v.rbegin(), v.rend()
#define alla(a,n) a, a + n
#define endstring std::string::npos
#define prtarr(n,len) {for(int i=0;i<len;i++) cout<<n[i]<<" "; cout<<"\n";}
#define prtset(n) {for(auto i:n) cout<<i<<" "; cout<<"\n";}
#define prtpair(n) {cout<<n.fr<<" "<<n.sc<<"\n";}
#define judge(a) {if(a) cout<<"YES"<<"\n"; else cout<<"NO"<<"\n";}
#define search(a,n) a.find(n)
#define Ataru main
using namespace std;

typedef long long int ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pii> vpii;
typedef pair<ll, ll> pll;
typedef vector<ll> vll;
typedef vector<ull> vull;
typedef vector<pll> vpll;
typedef vector<vll> vvll;
typedef vector<string> vs;
using namespace std;
int inquire(int x,int y){
    cout<<"? "<<x<<" "<<y<<endl;
    int a; cin>>a;
    return a;
}
const ll INF= 0x3f3f3f3f;
const ll bignum=1e18;


ll cases,n,maxs;
int Ataru() {
    //freopen("input.txt", "r", stdin) ;
    //freopen("output.txt", "w", stdout) ;
    ios_base::sync_with_stdio(false);
    cin.tie(NULL) ; cout.tie(NULL) ;
    //std::cout<<std::setprecision(2)<<std::fixed;
    cin>>cases;
    while(cases--){
        cin>>n;
        vll first;
        for(int i=2;i<=sqrt(n);i++){
            if(n%i==0){
                first.pb(i);
            }
        }
        if(first.size()==0) cout<<"1\n"<<n<<"\n";
        else{
            vll ans;
            maxs=0;
            for(int i=0;i<(int)first.size();i++){
                ll cnt=0;
                ll sub2=n;
                vll sub;
                while(sub2%first[i]==0){
                    cnt++;
                    sub2/=first[i];
                    if(sub2%first[i]==0){
                        sub.pb(first[i]);
                    }else{
                        sub.pb(sub2*first[i]);
                        break;
                    }
                }
                //prtarr(sub,(int)sub.size());
                if(cnt>maxs){
                    ans.clear();
                    maxs=cnt;
                    ans=sub;
                }
            }
            cout<<maxs<<"\n";
            prtarr(ans,(int)ans.size());
        }
    }
    return 0;
}
