#include <bits/stdc++.h>
using namespace std;
long long n, k;
int main() {
  scanf("%lld %lld", &n, &k);
  vector<long long> prime;
  for (int i = 2; i <= n; ++i) {
    if (!prime.size()) {
      prime.push_back(i);
      continue;
    }
    bool isPrime = true;
    for (int j = 0; j < prime.size(); ++j) {
      long long now = prime[j];
      if (now * now > i) break;
      if (!(i % now)) {
        isPrime = false;
        break;
      }
    }
    if (isPrime) prime.push_back(i);
  }
  vector<int> ans;
  for (int i = 0; i < prime.size(); ++i) {
    while (!(n % prime[i]) && k > 1 && n > 1) {
      ans.push_back(prime[i]);
      --k;
      n /= prime[i];
    }
  }
  if (n == 1) {
    puts("-1");
    return 0;
  }
  ans.push_back(n);
  --k;
  for (int i = 0; i < ans.size(); ++i)
    printf("%d%c", ans[i], " \n"[i + 1 == ans.size()]);
}
