#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
const int maxm = 1e5 + 10;
long long n, m, c[maxn], a[maxm], tot, cnt;
void init() {
  long long i;
  tot = 0;
  for (i = 1; i * i < n; i++)
    if (n % i == 0) {
      tot++;
      c[tot] = i;
      tot++;
      c[tot] = n / i;
    }
  if (i * i == n) {
    tot++;
    c[tot] = i;
  }
  sort(c + 1, c + tot + 1);
}
void dfs(long long x, long long step) {
  if (cnt >= 100000) return;
  if (x == 1 || step == 0) {
    if (cnt < 100000) {
      cnt++;
      a[cnt] = x;
    }
    return;
  }
  for (int i = 1; i <= tot; i++)
    if (x >= c[i] && x % c[i] == 0) {
      dfs(c[i], step - 1);
    }
}
int main() {
  scanf("%I64d%I64d", &n, &m);
  init();
  cnt = 0;
  dfs(n, m);
  for (int i = 1; i < cnt; i++) printf("%I64d ", a[i]);
  printf("%I64d\n", a[cnt]);
}
