#include <bits/stdc++.h>
using namespace std;
vector<long long> ans, fact;
vector<int> graph[10005];
void dfs(int x, int k) {
  if (x == 0 || k == 0) {
    ans.push_back(fact[x]);
    return;
  }
  for (int i = 0; i < graph[x].size(); i++) {
    dfs(graph[x][i], k - 1);
    if (ans.size() >= 100000) return;
  }
}
int main() {
  long long x, k;
  scanf("%lld %lld", &x, &k);
  k = min(k, 100000LL);
  for (long long i = 1; i * i <= x; i++) {
    if (x % i == 0) {
      fact.push_back(i);
      if (i != x / i) fact.push_back(x / i);
    }
  }
  sort(fact.begin(), fact.end());
  for (int i = 0; i < fact.size(); i++) {
    for (int j = 0; j <= i; j++) {
      if (fact[i] % fact[j] == 0) graph[i].push_back(j);
    }
  }
  dfs(fact.size() - 1, k);
  for (int i = 0; i < ans.size(); i++) printf("%lld ", ans[i]);
  puts("");
  return 0;
}
