#include <bits/stdc++.h>
using namespace std;
long long n, k, counter = 1, dv[50];
bool is_prime(long long x) {
  for (int i = 2; i <= sqrt(x); i += ((i == 2) ? 1 : 2)) {
    if (x % i == 0) return 0;
  }
  return 1;
}
int main() {
  cin >> n >> k;
  dv[0] = 1;
  while (!is_prime(n)) {
    for (int i = 2; i <= sqrt(n); i++) {
      if (is_prime(i) && n % i == 0) {
        n /= i;
        dv[counter++] = i;
      }
    }
  }
  dv[counter++] = n;
  int anything = 1;
  if (counter - 1 < k) {
    cout << -1;
    return 0;
  } else {
    for (int i = 1; i < counter; i++) {
      if (i >= k) anything *= dv[i];
      if (i < k)
        cout << dv[i] << " ";
      else if (i == counter - 1)
        cout << anything << " ";
    }
  }
  return 0;
}
