#include <bits/stdc++.h>
using namespace std;
struct RTC {
  ~RTC() { cerr << "Time: " << clock() * 1.0 / CLOCKS_PER_SEC << " seconds\n"; }
} runtimecount;
long long n, m;
vector<long long> divi;
int quedan = 100000;
void solve(long long pos, long long nivel) {
  if (quedan == 0) return;
  if (pos == 0 || nivel == m) {
    quedan--;
    printf("%I64d ", divi[pos]);
    return;
  }
  for (int i = 0; i <= pos; i++)
    if (divi[pos] % divi[i] == 0) {
      solve(i, nivel + 1);
    }
}
int main() {
  scanf("%I64d %I64d", &n, &m);
  for (long long d = 1; d * d <= n; d++)
    if (n % d == 0) {
      divi.push_back(d);
      if (d * d != n) divi.push_back(n / d);
    }
  sort((divi).begin(), (divi).end());
  solve(divi.size() - 1, 0);
  return 0;
}
