#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
vector<long long> edges[N];
long long vdiv[N];
int alreadyPrinted = 0;
void rec(int d, int k, int v, int m) {
  if (v == m || alreadyPrinted == N) {
    return;
  }
  if (v == 0) {
    cout << 1 << ' ';
    alreadyPrinted++;
    return;
  }
  if (d == k) {
    for (int i = 0; i < edges[v].size() && alreadyPrinted != N; i++) {
      cout << vdiv[edges[v][i]] << ' ';
      alreadyPrinted++;
    }
    return;
  }
  for (auto u : edges[v]) {
    rec(d + 1, k, u, m);
  }
}
void solve() {
  long long n;
  int k;
  cin >> n >> k;
  vector<long long> div;
  for (long long i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      div.push_back(i);
      if (i * i != n) div.push_back(n / i);
    }
  }
  sort(div.begin(), div.end());
  int m = div.size();
  for (int i = 0; i < m; i++) {
    vdiv[i] = div[i];
    for (int j = i; j < m; j++) {
      if (div[j] % div[i] == 0) edges[j].push_back(i);
    }
  }
  if (k > 0)
    rec(1, k, m - 1, m);
  else
    cout << n << '\n';
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  solve();
}
