#include <bits/stdc++.h>
using namespace std;
int a;
int b;
int K;
long long lim;
int prim[5] = {2, 3, 5, 7, 11};
vector<long long> all;
vector<long long> vec[10];
int main() {
  scanf("%d", &K);
  lim = 2 * K * K;
  int r;
  int bates = (K + 1) / 2;
  int turus[10] = {0};
  for (int i = 0; i < 5; i++) {
    long long r = 1;
    while (r <= lim) {
      r *= prim[i];
      if (r > lim) break;
      vec[i].push_back(r);
      turus[i]++;
    }
  }
  for (int i = 0; i < 5; i++) {
    int xx = all.size();
    int exc = 0;
    for (int k = 0; k < vec[i].size(); k++) {
      if (all.size() < K) {
        all.push_back(vec[i][k]);
      } else {
        if (all[exc] * vec[i][k] < lim) all[exc++] *= vec[i][k];
      }
    }
    for (int k = 0; k < vec[i].size(); k++) {
      for (int j = 0; j < xx; j++) {
        long long p = vec[i][k] * all[j];
        if (p <= lim) {
          if (all.size() < K) {
            all.push_back(p);
          } else {
            all[j] = p;
          }
        }
      }
    }
    memset(turus, 0, sizeof(turus));
    for (int j = 0; j < all.size(); j++) {
      for (int k = 0; k <= i; k++) {
        if (all[j] % prim[k] == 0) turus[k]++;
      }
    }
    bool bisa = true;
    sort(all.begin(), all.end());
    for (int j = 0; j <= i; j++) {
      if (turus[j] * 2 < K) {
        bisa = false;
        break;
      }
    }
    if (all.size() < K) bisa = false;
    if (bisa) break;
  }
  for (int i = 0; i < K; i++) {
    if (i) printf(" ");
    printf("%d", all[i]);
  }
  printf("\n");
  return 0;
}
