#include <bits/stdc++.h>
using namespace std;
int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
vector<int> next(vector<int>& a, int p, int k) {
  vector<int> result;
  for (long long mul = 1; mul <= (long long)k; mul *= p) {
    for (int i = 0; i < a.size(); ++i) {
      long long newN = (long long)a[i] * mul;
      if (newN <= k) {
        result.push_back((int)newN);
      }
    }
  }
  return result;
}
int main() {
  ios_base::sync_with_stdio(false);
  int k;
  cin >> k;
  int treshold = 2 * k * k;
  vector<int> p;
  vector<int> a;
  a.push_back(1);
  int need = (k / 2);
  if (k % 2 == 1) need++;
  p.push_back(prime[0]);
  int ppp = 1;
  for (int i = 0; i < p.size(); ++i) {
    int old = a.size();
    a = next(a, p[i], 2 * k * k);
    if (a.size() - old >= need && a.size() >= k)
      break;
    else
      p.push_back(prime[ppp++]);
  }
  vector<int> result;
  vector<int> h(p.size());
  int i = a.size() - 1;
  for (int ch = (int)p.size() - 1; ch >= 0; ch--) {
    for (; h[ch] < need && i >= 0; --i) {
      if (a[i] % p[ch] == 0) {
        result.push_back(a[i]);
        for (int pp = 0; pp < p.size(); ++pp) {
          if (a[i] % p[pp] == 0) ++h[pp];
        }
        a[i] = 31;
      }
    }
  }
  while (result.size() < k) {
    if (i < 0) i = (a.size() - 1);
    if (a[i] != 31) {
      result.push_back(a[i]);
      a[i] = 31;
    }
    i--;
  }
  for (int i = 0; i < result.size(); ++i) cout << result[i] << " ";
  return 0;
}
