#include <bits/stdc++.h>
using namespace std;
const int mod = 1000 * 1000 * 1000 + 7;
const int INF = 1e9 + 100;
const long long LINF = 1e18 + 100;
long long x, k;
const int n = 1e5;
vector<long long> divs;
vector<long long> ddv[7010];
vector<long long> fk[7010];
void getnxt(const vector<long long> &cur, vector<long long> &res) {
  res.clear();
  for (int ptr = 0; ptr < (int)cur.size() && (int)res.size() < n; ptr++) {
    int p = lower_bound((divs).begin(), (divs).end(), cur[ptr]) - divs.begin();
    for (int i = 0; i < (int)ddv[p].size() && (int)res.size() < n; i++)
      res.push_back(ddv[p][i]);
  }
}
void get2i(const vector<long long> &cur, vector<long long> &res) {
  res.clear();
  for (int i = (0); i < (7010); i++) fk[i].clear();
  int cnum = 0;
  for (long long u : cur) {
    int p = lower_bound((divs).begin(), (divs).end(), u) - divs.begin();
    fk[cnum].push_back(u);
    if (p == cnum) cnum++;
  }
  for (int ptr = 0; ptr < (int)cur.size() && (int)res.size() < n; ptr++) {
    int p = lower_bound((divs).begin(), (divs).end(), cur[ptr]) - divs.begin();
    for (int i = 0; i < (int)fk[p].size() && (int)res.size() < n; i++)
      res.push_back(fk[p][i]);
  }
  vector<long long> cop;
  cop.swap(res);
  getnxt(cop, res);
}
void getkth(vector<long long> &res, int k) {
  if (k == 1) {
    res = divs;
    return;
  }
  getkth(res, k / 2);
  vector<long long> cop;
  cop.swap(res);
  get2i(cop, res);
  if (k % 2 == 0) return;
  cop.clear();
  cop.swap(res);
  getnxt(cop, res);
}
int32_t main(void) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> x >> k;
  if (k == 0) return cout << x << '\n', 0;
  if (x == 1) {
    return cout << "1\n", 0;
  }
  if (k > n) {
    for (int i = (0); i < (n); i++) cout << "1 ";
    cout << '\n';
    return 0;
  }
  for (long long i = 1; i * i <= x; i++) {
    if (x % i == 0) {
      divs.push_back(i);
      if (i * i != x) divs.push_back(x / i);
    }
  }
  sort((divs).begin(), (divs).end());
  for (int i = (0); i < ((int)divs.size()); i++) {
    for (int j = (0); j < (i + 1); j++) {
      if (divs[i] % divs[j] == 0) ddv[i].push_back(divs[j]);
    }
  }
  vector<long long> ans;
  getkth(ans, k);
  for (long long u : ans) cout << u << ' ';
  cout << '\n';
  return 0;
}
