#include <bits/stdc++.h>
using namespace std;
long long x, k, tot;
bool ok;
int les = 1e5;
map<long long, vector<long long> > sv;
void Dfs(long long a, int dis) {
  if (les <= 0) return;
  if (a == 1 || dis == k) {
    if (les > 0) printf("%lld ", a);
    les--;
    return;
  }
  if (sv[a].size() != 0) {
    for (int i = 0; i < sv[a].size() && les > 0; i++) Dfs(sv[a][i], dis + 1);
  } else {
    int tmp = 0;
    vector<long long> q1, q2;
    for (long long i = 1; i <= sqrt(a) && les - tmp >= 0; i++) {
      if (a % i != 0) continue;
      q1.push_back(i);
      tmp++;
      if (a / i != i) q2.push_back(a / i);
    }
    for (int i = 0; i < q1.size(); i++) sv[a].push_back(q1[i]);
    for (int i = q2.size() - 1; i >= 0; i--) sv[a].push_back(q2[i]);
    for (int i = 0; i < q1.size() && les > 0; i++) {
      Dfs(q1[i], dis + 1);
    }
    for (int i = q2.size() - 1; i >= 0 && les > 0; i--) {
      Dfs(q2[i], dis + 1);
    }
  }
}
int main() {
  scanf("%lld %lld", &x, &k);
  Dfs(x, 0);
  return 0;
}
