#include <bits/stdc++.h>
using namespace std;
vector<int> is_prime(1000000, 1);
void siv() {
  is_prime[1] = 0;
  int sq = sqrt(1000000);
  for (int i = 4; i <= 1000000; i += 2) is_prime[i] = 0;
  for (int i = 3; i <= sq; i += 2) {
    if (is_prime[i]) {
      for (int j = (i * i); j <= 1000000; j += i) {
        is_prime[j] = 0;
      }
    }
  }
}
int main() {
  siv();
  int n, k, sq;
  scanf("%d %d", &n, &k);
  if (is_prime[n] == 1) {
    if (k == 1) {
      cout << n << endl;
      return 0;
    } else {
      cout << "-1" << endl;
      return 0;
    }
  }
  sq = sqrt(n);
  vector<int> ks;
  int divi = n;
  for (int i = 2; i <= n / 2;) {
    int off = 0;
    if (divi % i == 0) {
      ks.push_back(i);
      divi = divi / i;
    } else {
      while (1) {
        i++;
        if (i > n / 2) {
          off = 1;
          break;
        }
        if (divi % i == 0) break;
      }
    }
    if (off == 1) break;
  }
  int s = ks.size();
  if (ks.size() < k)
    cout << "-1\n";
  else {
    sort(ks.begin(), ks.end());
    int last = 1;
    for (int i = 1; i < k; i++) {
      cout << ks[i] << " ";
      last *= ks[i];
    }
    cout << n / last << endl;
  }
  return 0;
}
