#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<queue>
using namespace std;
void judge(vector<int>& res, bool &flag, int n, int k){
for (int i = 2; i < n; i++){
while (n%i == 0){
res.push_back(i);
n = n / i;
if (res.size() == k - 1 && n != 1){
res.push_back(n);
return;
}
else if (res.size() == k - 1 && n == 1){
flag = false;
return;
}
}
}
flag = false;
}
int main(){
int n, k;
while (cin >> n >> k){
bool flag = true;
if (k == 1){
cout << n << endl;
}
else{
vector<int> result;
judge(result, flag, n, k);
if (flag){
for (int i = 0; i < result.size(); i++) cout << result[i] << " ";
cout << endl;
}
else{
cout << "-1" << endl;
}
}
}
return 0;
}