#include <bits/stdc++.h>
using namespace std;
const double Pi = acos(-1.0);
struct no {
  int mask;
  long long num;
  no(int mask = 0, long long num = 0) : mask(mask), num(num) {}
  bool operator<(const no &q) const { return num < q.num; }
  void print() {
    printf("num=%10d   mask=", num);
    for (int i = 7; i >= 0; i--) printf("%d", (bool)(mask & (1 << i)));
    cout << endl;
  }
};
bool comp(no a, no b) {
  int aa = __builtin_popcount(a.mask), bb = __builtin_popcount(b.mask);
  if (aa != bb) return aa > bb;
  return a.mask > b.mask;
}
set<no> s;
vector<int> v;
vector<no> m;
int show[100];
bool solve(int id, long long k) {
  if ((long long)s.size() < k) return false;
  m.clear();
  for (set<no>::iterator it = s.begin(); it != s.end(); it++)
    m.push_back((*it));
  sort(m.begin(), m.end(), comp);
  for (int i = 0; i < id; i++) show[i] = 0;
  v.clear();
  for (int i = 0; i < k; i++) {
    v.push_back(m[i].num);
    for (int j = 0; j < id; j++) show[j] += !(!(m[i].mask & (1 << j)));
  }
  for (int i = 0; i < id; i++)
    if (show[i] < k / 2) return false;
  for (int i = 0; i < k; i++) {
    if (i != 0) printf(" ");
    printf("%d", v[i]);
  }
  cout << endl;
  return true;
}
int main() {
  int p[9] = {2, 3, 5, 7, 11, 13, 17, 19, 23};
  long long k;
  cin >> k;
  long long val = 2 * k * k;
  s.insert(no(0, 1));
  for (int i = 0; i < 9; i++) {
    set<no> tmp;
    for (set<no>::iterator it = s.begin(); it != s.end(); it++) {
      int pot = p[i];
      while ((*it).num * pot <= val) {
        tmp.insert(no(((*it).mask | (1 << i)), (*it).num * pot));
        pot *= p[i];
      }
    }
    for (set<no>::iterator it = tmp.begin(); it != tmp.end(); it++) {
      s.insert((*it));
    }
    if (solve(i + 1, k)) break;
  }
  return 0;
}
