#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
const int MAX = 50000007;
const int P[5] = {2, 3, 5, 7, 11};
vector<int> mas;
void gen(int p, int cur, int mx = MAX) {
  if (cur > mx) return;
  if (p == 5) {
    if (cur != 1) mas.push_back(cur);
    return;
  }
  gen(p, cur * P[p], mx);
  gen(p + 1, cur, mx);
}
int n, need[5];
vector<int> ans;
set<int> S;
void add(int d) {
  if ((int)(ans).size() == n) return;
  for (set<int>::iterator it = S.begin(); it != S.end();) {
    int x = *it;
    if (x % d == 0) {
      ans.push_back(x);
      for (int j = 0; j < 5; ++j)
        if (x % P[j] == 0) --need[j];
      it = S.erase(it);
      if ((int)(ans).size() == n) return;
    } else
      ++it;
  }
}
int main() {
  cin >> n;
  int mx = 2 * n * n;
  gen(0, 1, mx);
  sort((mas).begin(), (mas).end());
  S = set<int>((mas).begin(), (mas).end());
  int half = (n + 1) >> 1;
  for (int i = 0; i < 5; ++i) need[i] = half;
  if (n >= 13) {
    cerr << (int)(S).size() << endl;
    if (need[4] > 0) add(11 * 7 * 5 * 3 * 2);
    if (need[4] > 0) add(11 * 7 * 5 * 3);
    if (need[4] > 0) add(11 * 7 * 5 * 2);
    if (need[4] > 0) add(11 * 7 * 5);
    if (need[4] > 0) add(11 * 7 * 3 * 2);
    if (need[4] > 0) add(11 * 7 * 3);
    if (need[4] > 0) add(11 * 7 * 2);
    if (need[4] > 0) add(11 * 7);
    if (need[4] > 0) add(11 * 5 * 3 * 2);
    if (need[4] > 0) add(11 * 5 * 3);
    if (need[4] > 0) add(11 * 5 * 2);
    if (need[4] > 0) add(11 * 5);
    if (need[4] > 0) add(11 * 3 * 2);
    if (need[4] > 0) add(11 * 3);
    if (need[4] > 0) add(11 * 2);
    if (need[4] > 0) add(11);
    if (need[3] > 0) add(7 * 5 * 3 * 2);
    if (need[3] > 0) add(7 * 5 * 3);
    if (need[3] > 0) add(7 * 5 * 2);
    if (need[3] > 0) add(7 * 5);
    if (need[3] > 0) add(7 * 3 * 2);
    if (need[3] > 0) add(7 * 3);
    if (need[3] > 0) add(7 * 2);
    if (need[3] > 0) add(7);
    if (need[2] > 0) add(5 * 3 * 2);
    if (need[2] > 0) add(5 * 3);
    if (need[2] > 0) add(5 * 2);
    if (need[2] > 0) add(5);
    if (need[1] > 0) add(3 * 2);
    if (need[1] > 0) add(3);
    if (need[0] > 0) add(2);
    while ((int)(ans).size() != n) {
      ans.push_back(*S.begin());
      S.erase(S.begin());
    }
    assert((int)(ans).size() == n);
    for (int i = 0; i < 5; ++i) assert(need[i] <= 0);
    for (int i = 0; i < n; ++i) cout << ans[i] << " ";
    cout << endl;
  } else {
    if (need[3] > 0) add(7 * 5 * 3 * 2);
    if (need[3] > 0) add(7 * 5 * 3);
    if (need[3] > 0) add(7 * 5 * 2);
    if (need[3] > 0) add(7 * 5);
    if (need[3] > 0) add(7 * 3 * 2);
    if (need[3] > 0) add(7 * 3);
    if (need[3] > 0) add(7 * 2);
    if (need[3] > 0) add(7);
    if (need[2] > 0) add(5 * 3 * 2);
    if (need[2] > 0) add(5 * 3);
    if (need[2] > 0) add(5 * 2);
    if (need[2] > 0) add(5);
    if (need[1] > 0) add(3 * 2);
    if (need[1] > 0) add(3);
    if (need[0] > 0) add(2);
    assert((int)(ans).size() == n);
    for (int i = 0; i < 4; ++i) assert(need[i] <= 0);
    for (int i = 0; i < n; ++i) cout << ans[i] << " ";
    cout << endl;
  }
  return 0;
}
