#include <bits/stdc++.h>
using namespace std;
inline const int read() {
  int r = 0, k = 1;
  char c = getchar();
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') k = -1;
  for (; c >= '0' && c <= '9'; c = getchar()) r = r * 10 + c - '0';
  return k * r;
}
const int limit = 100000;
long long n, k;
long long a[20000];
bool stop;
long long ans[100010];
void dfs(int cur, long long k) {
  if (stop) return;
  if (k == 0 || cur == 1) {
    ans[++*ans] = a[cur];
    if (*ans >= limit) stop = 1;
    return;
  }
  for (int i = (1), _ = (cur); i <= _; i++)
    if (a[cur] % a[i] == 0) {
      dfs(i, k - 1);
      if (stop) return;
    }
}
void input() { cin >> n >> k; }
void solve() {
  if (k == 0) {
    cout << n << endl;
    return;
  }
  if (n == 1) {
    puts("1");
    return;
  }
  if (k >= limit) {
    for (int i = (1), _ = (limit); i <= _; i++) printf("1 ");
    return;
  }
  for (long long i = 1; i * i <= n; i++)
    if (n % i == 0) {
      a[++*a] = i;
      if (i * i != n) a[++*a] = n / i;
    }
  sort(&a[1], &a[*a + 1]);
  dfs(*a, k);
  for (int i = (1), _ = (*ans); i <= _; i++) printf("%I64d ", ans[i]);
}
int main() {
  input(), solve();
  return 0;
}
