#include <bits/stdc++.h>
using namespace std;
long long gcd(long long n1, long long n2) {
  if (n1 % n2 == 0) return n2;
  return gcd(n2, n1 % n2);
}
long long powmod(long long base, long long exponent) {
  long long ans = 1;
  while (exponent) {
    if (exponent & 1) ans = (ans * base) % 1000000007;
    base = (base * base) % 1000000007;
    exponent /= 2;
  }
  return ans;
}
int j = 0;
long long answer[100000 + 1];
vector<long long> factors;
void fill(long long n, long long k) {
  if (k == 0 || n == 1) {
    answer[j++] = n;
    return;
  }
  bool isprime = true;
  for (int i = 0; factors[i] < n; i++)
    if (n % factors[i] == 0) {
      if (factors[i] > 1) isprime = false;
      fill(factors[i], k - 1);
      if (j >= 100000) return;
    }
  if (isprime) {
    for (int i = 1; i < k; i++) {
      answer[j++] = 1;
      if (j >= 100000) return;
    }
    if (j < 100000) answer[j++] = n;
    return;
  }
  fill(n, k - 1);
}
int main() {
  long long n, k, i;
  scanf("%lld", &n);
  scanf("%lld", &k);
  for (i = 1; i * i < n; i++)
    if (n % i == 0) {
      factors.push_back(i);
      factors.push_back(n / i);
    }
  if (i * i == n) factors.push_back(i);
  sort(factors.begin(), factors.end());
  fill(n, k);
  for (i = 0; i < min(j, 100000); i++) printf("%lld ", answer[i]);
  return 0;
}
