#include <bits/stdc++.h>
using namespace std;
vector<long long> Q[31][10001], Ans[31];
long long n, k;
long long p[1000001], len[1000001];
int cnt, sum, key, a_cnt, pt, t_cnt, shi;
int main() {
  scanf("%I64d%I64d", &n, &k);
  if (n == 1) {
    printf("1\n");
    return 0;
  }
  if (k == 0) {
    printf("%I64d\n", n);
    return 0;
  }
  if (k > 100000) {
    for (int i = 1; i <= 100000; i++) printf("1 ");
    printf("\n");
    return 0;
  }
  for (long long i = 1; i * i <= n; i++)
    if (n % i == 0) {
      p[++cnt] = i;
      if (n / i != i) p[++cnt] = n / i;
    }
  sort(p + 1, p + 1 + cnt);
  for (int i = 1; i <= cnt; i++) Ans[a_cnt = 1].push_back(i);
  k--;
  for (int i = 1; i <= cnt; i++) len[i] = 1, Q[1][i].push_back(i);
  key = 1;
  t_cnt = 0;
  for (int i = 1; i <= cnt; i++) {
    for (int j = 1; j <= i; j++)
      if (p[i] % p[j] == 0) {
        vector<long long>::iterator it = Q[key][j].begin();
        while (it != Q[key][j].end()) {
          Q[key + 1][i].push_back(*it);
          t_cnt++;
          if (t_cnt >= 100000) break;
          it++;
        }
      }
    if (t_cnt >= 100000) break;
  }
  key++;
  int tmp = k;
  while (tmp) {
    if (tmp & 1) {
      sum = 0;
      vector<long long>::iterator it = Ans[a_cnt].begin();
      while (it != Ans[a_cnt].end()) {
        vector<long long>::iterator itt = Q[key][*it].begin();
        while (itt != Q[key][*it].end()) {
          Ans[a_cnt + 1].push_back(*itt);
          sum++;
          if (sum >= 100000) break;
          itt++;
        }
        if (sum >= 100000) break;
        it++;
      }
      a_cnt++;
    }
    t_cnt = 0;
    for (int i = 1; i <= cnt; i++) {
      vector<long long>::iterator it = Q[key][i].begin();
      while (it != Q[key][i].end()) {
        vector<long long>::iterator itt = Q[key][*it].begin();
        while (itt != Q[key][*it].end()) {
          Q[key + 1][i].push_back(*itt);
          t_cnt++;
          if (t_cnt >= 100000) break;
          itt++;
        }
        if (t_cnt >= 100000) break;
        it++;
      }
      if (t_cnt >= 100000) break;
    }
    tmp >>= 1;
    key++;
  }
  vector<long long>::iterator it = Ans[a_cnt].begin();
  for (int i = 1; i <= 100000; i++) {
    pt++;
    printf("%I64d ", p[*it]);
    it++;
    if (it == Ans[a_cnt].end()) break;
  }
  printf("\n");
}
