#include <bits/stdc++.h>
using namespace std;
vector<long long> ans, v, vec;
long long n, k, lim = 1e5;
void dfs(long long x, long long y) {
  if (!lim) exit(0);
  if (y == k || x == 1) {
    cout << x << ' ';
    lim--;
    return;
  }
  long long i;
  for (i = 0; i < (((long long)v.size())) && v[i] * v[i] <= x; i++)
    if ((x % v[i]) == 0) dfs(v[i], y + 1);
  for (i = i - 1; i >= 0; i--)
    if (((x % v[i]) == 0) && (v[i] * v[i] != x)) dfs(x / v[i], y + 1);
}
int main() {
  cin >> n >> k;
  if (n == 1) {
    cout << 1;
    return 0;
  }
  for (long long i = 1; i * i <= n; i++)
    if ((n % i) == 0) {
      v.push_back(i);
    }
  if (k >= lim) {
    for (long long i = 0; i < lim; i++) cout << "1 ";
    return 0;
  }
  dfs(n, 0);
}
