#include <bits/stdc++.h>
using namespace std;
bool prime[100005];
vector<int> primes;
void seive() {
  prime[0] = prime[1] = 1;
  for (int i = 2; i < 1000; i++) {
    if (prime[i]) continue;
    primes.push_back(i);
    for (int j = i * i; j < 100005; j += i) prime[j] = 1;
  }
}
int main() {
  seive();
  int n, k;
  cin >> n >> k;
  int j = 0;
  vector<int> ans;
  while (1) {
    if ((n / primes[j]) < 2) break;
    if (ans.size() == k - 1) break;
    if (n % primes[j] == 0) {
      ans.push_back(primes[j]);
      n /= primes[j];
    } else
      j++;
  }
  if (ans.size() == k - 1 && n >= 2) {
    for (int i = 0; i < k - 1; i++) cout << ans[i] << ' ';
    cout << n << endl;
  } else
    cout << -1 << endl;
  return 0;
}
