#include <bits/stdc++.h>
using namespace std;
int n, prim[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
vector<long long> have;
int main() {
  scanf("%d", &n);
  long long lim = 2LL * n * n, now = 2;
  set<long long> st;
  while (st.size() < n and now <= lim) {
    st.insert(now), now *= 2;
  }
  int id = 1;
  for (; id < 8; id++) {
    have.clear();
    have.assign(st.begin(), st.end());
    for (now = prim[id]; now <= lim; now *= prim[id]) {
      for (auto& h : have) {
        if (h * now > lim) break;
        st.insert(h * now);
      }
    }
    if (st.size() >= n) break;
  }
  have.clear();
  have.assign(st.begin(), st.end());
  st.clear();
  for (; n--; st.insert(have.back()), have.pop_back())
    ;
  for (auto it = st.begin(); it != st.end(); it++)
    printf("%lld", *it), printf(" ");
  printf("\n");
  return 0;
}
