#include <bits/stdc++.h>
using namespace std;
int prime[100000];
int not_prime[100000 + 1];
vector<int> result;
int Prime() {
  int cnt = 0;
  for (int i = 2; i <= 100000; i++) {
    if (!not_prime[i]) prime[cnt++] = i;
    for (int j = 0; j < cnt && i * prime[j] <= 100000; j++) {
      not_prime[i * prime[j]] = 1;
      if (i % prime[j] == 0) break;
    }
  }
  return cnt;
}
int main() {
  int cnt = Prime();
  int n, k;
  scanf("%d%d", &n, &k);
  if (k == 1) {
    printf("%d\n", n);
    return 0;
  }
  for (int i = 0; i < cnt; i++) {
    if (result.size() == k - 1) break;
    if (n == 1) break;
    if (!not_prime[n]) break;
    while (n % prime[i] == 0 && result.size() < k - 1) {
      result.push_back(prime[i]);
      n /= prime[i];
    }
  }
  if (result.size() < k - 1 || (result.size() == k - 1 && n == 1))
    printf("-1\n");
  else {
    for (int i = 0; i < result.size(); i++) printf("%d ", result[i]);
    printf("%d\n", n);
  }
  return 0;
}
