#include <bits/stdc++.h>
using namespace std;
vector<int> ans;
long long wanted = 2, lim, k;
int prime[] = {2, 3, 5, 7, 11};
void dfs(long long cur, int depth) {
  if (depth == wanted) {
    ans.push_back(cur);
    return;
  }
  while (cur < lim) {
    dfs(cur, depth + 1);
    cur *= prime[depth];
  }
}
int main() {
  map<int, int> store;
  cin >> k;
  lim = k * k * 2;
  while (wanted <= 5) {
    ans.clear(), store.clear();
    dfs(1, 0);
    if (ans.size() >= k) {
      sort(ans.begin(), ans.end());
      reverse(ans.begin(), ans.end());
      for (int i = 0; i < k; i++) {
        for (int j = 0; j < wanted; j++) {
          if (ans[i] % prime[j] == 0) store[j]++;
        }
      }
      int flag = false;
      for (int j = 0; j < wanted; j++) {
        if (store[j] < k / 2) {
          flag = true;
          break;
        }
      }
      if (!flag) break;
    }
    wanted++;
  }
  if (ans.size() < k) assert(1 == 2);
  int cnt = 0;
  for (int i = 0; i < k; i++) {
    if (ans[i] > lim) assert(1 == 2);
    cout << ans[i] << " ";
  }
  cout << endl;
  return 0;
}
