#include <bits/stdc++.h>
using namespace std;
map<long long, vector<long long> > v;
void f(long long base) {
  for (long long i = 1; i * i <= base; i++) {
    if (base % i == 0) {
      v[base].push_back(i);
      if (i * i != base) v[base].push_back(base / i);
    }
  }
  sort(v[base].begin(), v[base].end());
}
vector<long long> ans;
long long x, k;
int id;
void solve(long long num, long long idx) {
  if (ans.size() >= 100000) {
    for (int i = 0; i < min(100000, (int)ans.size()); i++)
      printf("%lld%c", ans[i],
             (i + 1 == min(100000, (int)ans.size())) ? '\n' : ' ');
    exit(0);
  }
  if (num == 1) {
    ans.push_back(1);
    return;
  }
  if (idx == k) {
    ans.push_back(num);
    return;
  }
  for (auto d : v[num])
    if (ans.size() < 100000)
      solve(d, idx + 1);
    else
      break;
}
int main() {
  cin >> x >> k;
  if (k > 100000 && x != 1) {
    for (int i = 0; i < 100000; i++) cout << 1 << ' ';
    return 0;
  }
  if (!k) {
    cout << x << endl;
    return 0;
  }
  f(x);
  for (auto d : v[x])
    if (d != x) f(d);
  solve(x, 0);
  for (int i = 0; i < min(100000, (int)ans.size()); i++)
    printf("%lld%c", ans[i],
           (i + 1 == min(100000, (int)ans.size())) ? '\n' : ' ');
  return 0;
}
