#include <bits/stdc++.h>
using namespace std;
int flag[1000000 / 64];
vector<int> ret;
vector<int> sieve() {
  unsigned i, j, k;
  flag[0] |= 0;
  for (i = 3; i < sqrt(1000000) + 1; i += 2) {
    if (!(flag[i >> 6] & (1 << ((i >> 1) & 31)))) {
      for (j = i * i, k = i << 1; j < 1000000; j += k)
        (flag[j >> 6] |= (1 << ((j >> 1) & 31)));
    }
  }
  if (1000000 > 1) ret.push_back(2);
  for (i = 3; i < 1000000; i += 2) {
    if (!(flag[i >> 6] & (1 << ((i >> 1) & 31)))) {
      ret.push_back(i);
    }
  }
  return ret;
}
long long n;
vector<int> v;
void gen(int pos) {
  vector<int> re;
  int x = ret[pos];
  int t = x;
  while (t <= 2 * n * n) {
    re.push_back(t);
    t *= x;
  }
  for (int i = 0; i < (((int)(v).size())); i++) {
    t = x;
    while (v[i] * t <= 2 * n * n) {
      re.push_back(v[i] * t);
      t *= x;
    }
  }
  for (int i = 0; i < (((int)(re).size())); i++) v.push_back(re[i]);
}
bool chk(vector<int> &v, int n, int pos) {
  set<int> st((v).begin(), (v).end());
  for (int i = 0; i < (pos + 1); i++) {
    int cc = 0;
    for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
      if ((*it) % ret[i] == 0) {
        cc++;
        if (cc >= (n + 1) / 2) break;
      }
    }
    if (cc < (n + 1) / 2) {
      int dif = (n + 1) / 2 - cc;
      vector<int> t1, t2;
      for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
        if ((*it) % ret[i]) {
          if (st.count((*it) * ret[i])) continue;
          t1.push_back(*it);
          t2.push_back((*it) * ret[i]);
          dif--;
          if (!dif) break;
        }
      }
      for (int j = 0; j < (((int)(t1).size())); j++) {
        st.erase(t1[j]);
        st.insert(t2[j]);
      }
    }
  }
  vector<int> tmp((st).begin(), (st).end());
  v = tmp;
  return true;
}
void ck(vector<int> v, int pos, int n) {
  for (int i = 0; i < (pos + 1); i++) {
    int cc = 0;
    for (int j = 0; j < (((int)(v).size())); j++) {
      if (v[j] % ret[i] == 0) {
        cc++;
        if (cc >= n / 2) break;
      }
    }
    if (cc < n / 2) {
      cout << n << " " << ret[i] << " " << cc << endl;
      getchar();
      return;
    }
  }
  cout << "hoise " << n << endl;
}
int main(void) {
  ios_base::sync_with_stdio(0);
  sieve();
  cin >> n;
  int t = 2;
  while (true) {
    int pos = 0;
    v.clear();
    for (int i = 0; i < (t); i++) {
      gen(i);
      pos++;
    }
    t++;
    if (((int)(v).size()) < n) continue;
    sort((v).begin(), (v).end());
    v.resize(n);
    chk(v, n, pos);
    if (v.back() <= 2 * n * n) {
      break;
    }
    if (v.back() > 2 * n * n)
      continue;
    else
      break;
  }
  for (int i = 0; i < (n); i++) cout << v[i] << " ";
  return 0;
}
