#include <bits/stdc++.h>
using namespace std;
bool isprime(int t) {
  if (t < 2) return false;
  int a = 2;
  while (a * a <= t) {
    if ((t % a) == 0) return false;
    ++a;
  }
  assert(true);
  return true;
}
const int INF = 1000000009;
vector<int> res;
int ilo(vector<int>& vec, int a) {
  long long res = 1;
  for (int i = 0; i < (vec.size()); ++i) {
    if (((1 << i) & a) != 0) res *= vec[i];
    if (res > (long long)INF) return INF;
  }
  return (int)res;
}
vector<int> prim;
bool check(int a) {
  for (__typeof((prim).begin()) it = ((prim).begin()); it != (prim).end();
       ++it) {
    while (a % (*it) == 0) a /= (*it);
  }
  return a == 1;
}
int main() {
  int k;
  cin >> k;
  vector<int> res;
  prim.push_back(2);
  prim.push_back(3);
  prim.push_back(5);
  prim.push_back(7);
  prim.push_back(11);
  prim.push_back(13);
  prim.push_back(17);
  prim.push_back(23);
  vector<int> ttmp;
  int ilo = 1;
  for (__typeof((prim).begin()) it = ((prim).begin()); it != (prim).end();
       ++it) {
    if (ilo * (*it) < k) {
      ilo *= (*it);
      ttmp.push_back(*it);
    }
  }
  prim = ttmp;
  for (int i = 0; i < (prim.size()); ++i) {
    int p(prim[i]);
    res.push_back(p);
    for (int j = 0; j < (res.size()); ++j) {
      if (res[j] * p <= 2 * k * k) res.push_back(p * res[j]);
    }
  }
  for (int i = res.size() - 1; i >= (res.size() - k); --i) {
    cout << res[i] << ' ';
  }
  cout << endl;
}
