#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 50;
const int INF = 0x3f3f3f3f;
long long cnt, tot = 0;
long long di[MAXN];
void _get(long long x) {
  long long m = (long long)(sqrt(x) + 0.5);
  for (long long i = 1; i <= m; i++)
    if (!(x % i)) {
      di[cnt++] = i;
      if (x != i * i) di[cnt++] = x / i;
    }
  sort(di, di + cnt);
}
void dfs(long long n, long long k) {
  if (tot >= 100000) return;
  if (!k || n == 1) {
    cout << n << ' ';
    tot++;
    return;
  }
  for (int i = 0; i < cnt && di[i] <= n; i++) {
    if (!(n % di[i])) dfs(di[i], k - 1);
  }
}
int main() {
  long long n, k;
  scanf("%I64d%I64d", &n, &k);
  cnt = 0;
  _get(n);
  dfs(n, k);
  return 0;
}
