#include <bits/stdc++.h>
using namespace std;
long long nr, lvl, hmmm;
int Q = 1e5;
unordered_map<long long, int> m;
set<long long> mp;
set<long long>::iterator it;
vector<long long> divisors[100002];
void recind(long long nr, int lev) {
  if (lvl == lev) {
    cout << nr << " ";
    --Q;
    return;
  }
  if (!Q) return;
  set<long long> v;
  cout << 1 << " ";
  --Q;
  if (!Q) return;
  if (m[nr]) {
    int qt = m[nr];
    for (int i = 0; i < divisors[qt].size(); ++i) v.insert(divisors[qt][i]);
  } else {
    ++hmmm;
    m[nr] = hmmm;
    v.insert(nr);
    divisors[hmmm].push_back(nr);
    for (long long j = 2; j * j <= nr; ++j)
      if (nr % j == 0) {
        v.insert(j);
        divisors[hmmm].push_back(j);
        if (j != nr / j) v.insert(nr / j), divisors[hmmm].push_back(nr / j);
      }
    sort(divisors[hmmm].begin(), divisors[hmmm].end());
  }
  bool q = 0;
  set<long long>::iterator Rose_Marie;
  for (Rose_Marie = v.begin(); Rose_Marie != v.end(); ++Rose_Marie) {
    long long Rozi = *Rose_Marie;
    it = mp.find(Rozi);
    if (it != mp.end()) {
      for (int j = lev + 1; j < lvl && Q; --Q, ++j) cout << 1 << " ";
      if (Q) cout << Rozi << " ", --Q;
      if (!Q) return;
      q = 1;
    } else
      recind(Rozi, lev + 1);
    if (!Q) return;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> nr >> lvl;
  if (nr == 1) {
    cout << 1;
    return 0;
  }
  if (lvl >= 1e5) {
    for (int i = 1; i <= 1e5; ++i) cout << 1 << " ";
    return 0;
  } else
    recind(nr, 0);
  return 0;
}
