#include <bits/stdc++.h>
using namespace std;
long long n;
long long primes[] = {2, 3, 5, 7, 11};
int cnts[] = {0, 0, 0, 0, 0};
int limit = 2;
vector<long long> ans;
void dfs(long long cur, int id) {
  if (id == limit) {
    ans.push_back(cur);
  } else {
    while (cur < n * n * 2) {
      dfs(cur, id + 1);
      cur *= primes[id];
    }
  }
}
bool check(int the_limit) {
  limit = the_limit;
  ans.clear();
  dfs(1, 0);
  sort(ans.begin(), ans.end());
  reverse(ans.begin(), ans.end());
  if (ans.size() < n) return false;
  memset(cnts, 0, sizeof(cnts));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < limit; j++)
      if (ans[i] % primes[j] == 0) cnts[j]++;
  }
  for (int j = 0; j < limit; j++)
    if (cnts[j] * 2 < n) return false;
  return true;
}
int MAIN() {
  cin >> n;
  while (check(limit) == false) limit++;
  for (int i = 0; i < n; i++) cout << ans[i] << (i == n - 1 ? "\n" : " ");
  return 0;
}
int main() {
  ios ::sync_with_stdio(false);
  cout << fixed << setprecision(16);
  return MAIN();
}
