#include <bits/stdc++.h>
using namespace std;
const int MAXDIV = 1 << 14;
long long X, K;
vector<long long> divs;
map<long long, vector<long long> > divdivs;
int op = 100000;
void cntdiv() {
  long long rt = -1;
  for (long long i = 1; i * i <= X; i++) {
    if (!(X % i)) {
      divs.push_back(i);
      if (i * i == X) {
        rt = i;
        break;
      }
    }
  }
  for (int i = divs.size() - 1 - (rt != -1); i >= 0; i--) {
    divs.push_back(X / divs[i]);
  }
}
void cntdivdiv() {
  for (int i = 0, siz = divs.size(); i < siz; i++) {
    vector<long long> &v = divdivs[divs[i]];
    for (int j = i; j >= 0; j--) {
      if (!(divs[i] % divs[j])) {
        v.push_back(divs[j]);
      }
    }
  }
}
void kill() {
  if (!(--op)) exit(0);
}
vector<pair<long long, long long> > s;
void dfs() {
  s.push_back(pair<long long, long long>(X, K));
  while (!s.empty()) {
    pair<long long, long long> t = s.back();
    s.pop_back();
    if (t.first == 1) {
      cout << "1 ";
      kill();
      continue;
    }
    if (t.second--) {
      vector<long long> &v = divdivs[t.first];
      for (vector<long long>::iterator it = v.begin(); it != v.end(); it++) {
        s.push_back(pair<long long, long long>((*it), t.second));
      }
    } else {
      cout << t.first << ' ';
      kill();
    }
  }
}
int main() {
  cin >> X >> K;
  cntdiv();
  cntdivdiv();
  dfs();
  return 0;
}
