#include <bits/stdc++.h>
using namespace std;
vector<long long> t;
unordered_map<long long, vector<long long>> vc;
long long x;
int cnt = 0;
void dfs(long long k, long long n) {
  if (cnt == 1e5) return;
  if (n == 1) {
    cout << 1 << ' ';
    cnt++;
    return;
  }
  if (k == 0) {
    cout << n << ' ';
    cnt++;
    return;
  } else {
    if (n == x) {
      for (int i = 0; i < t.size(); i++) {
        dfs(k - 1, t[i]);
      }
    } else {
      if (vc.find(n) != vc.end()) {
        for (auto x : vc[n]) {
          dfs(k - 1, x);
          if (cnt == 1e5) return;
        }
      } else {
        for (long long i = 1; i * i <= n; i++) {
          if (n % i == 0) {
            if (i * i == n)
              vc[n].push_back(i);
            else
              vc[n].push_back(i), vc[n].push_back(n / i);
          }
        }
        sort(vc[n].begin(), vc[n].end());
        for (auto x : vc[n]) {
          dfs(k - 1, x);
          if (cnt == 1e5) return;
        }
      }
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long k;
  cin >> x >> k;
  for (long long i = 1; i * i <= x; i++) {
    if (x % i == 0) {
      if (i * i == x)
        t.push_back(i);
      else
        t.push_back(i), t.push_back(x / i);
    }
  }
  sort(t.begin(), t.end());
  if (k == 0)
    cout << x << endl;
  else if (k >= 1e5) {
    if (x == 1)
      cout << 1 << endl;
    else {
      for (int i = 1; i <= 1e5; i++) cout << 1 << ' ';
      cout << endl;
    }
  } else
    dfs(k, x);
  return 0;
}
