#include <bits/stdc++.h>
using namespace std;
map<unsigned long long, vector<unsigned long long> > mdivs;
unsigned int printed = 0;
vector<unsigned long long>& get_divs(unsigned long long n) {
  vector<unsigned long long>& divs = mdivs[n];
  if (!divs.empty()) return divs;
  unsigned long long brdr = sqrt((double)n);
  if ((brdr + 1) * (brdr + 1) <= n) ++brdr;
  bool opr = (brdr * brdr == n);
  vector<unsigned long long> bigdiv;
  for (unsigned long long i = 1; i <= brdr; ++i) {
    if (n % i == 0) {
      divs.push_back(i);
      bigdiv.push_back(n / i);
    }
  }
  if (opr) bigdiv.pop_back();
  divs.insert(divs.end(), bigdiv.rbegin(), bigdiv.rend());
  return divs;
}
void print_divs(unsigned long long num, unsigned long long k) {
  if (num == 1 || k == 0) {
    cout << num << ' ';
    ++printed;
    return;
  } else {
    vector<unsigned long long>& divs = get_divs(num);
    for (unsigned long long i : divs) {
      print_divs(i, k - 1);
      if (printed == 100000) return;
    }
  }
}
int main() {
  unsigned long long n, k;
  cin >> n >> k;
  print_divs(n, k);
  return 0;
}
