#include <bits/stdc++.h>
using namespace std;
int A[] = {2, 3, 5, 7, 11, 13, 17, 19}, n, B[5005], vmax;
priority_queue<int> Q;
set<int> S;
inline int sol(int i) {
  int j, k, t, first, second;
  B[0] = 1;
  for (j = 1; j <= n; j++) {
    first = B[j - 1] * A[0];
    for (t = 0; t < j; t++)
      for (k = 0; k < i; k++)
        if (B[t] * A[k] > B[j - 1]) first = min(first, B[t] * A[k]);
    B[j] = first;
    if (first > vmax) return 0;
  }
  for (j = 0; j < i; j++) {
    first = 0;
    for (k = 1; k <= n; k++)
      if (B[k] % A[j] == 0) first++;
    if (first < (n + 1) / 2) {
      S.clear();
      for (k = 1; k <= n; k++) S.insert(B[k]);
      first = (n + 1) / 2 - first;
      for (k = 1; k <= n && first; k++)
        if (B[k] % A[j] != 0) {
          second = B[k] * A[j];
          while (S.find(second) != S.end()) {
            second *= A[j];
            if (second > vmax) return 0;
          }
          if (second > vmax) return 0;
          S.erase(B[k]);
          B[k] = second;
          S.insert(B[k]);
          first--;
        }
      sort(B + 1, B + n + 1);
    }
  }
  for (j = 0; j < i; j++) {
    first = 0;
    for (k = 1; k <= n; k++)
      if (B[k] % A[j] == 0) first++;
    if (first < (n + 1) / 2) return 0;
  }
  return 1;
}
int main() {
  cin >> n;
  vmax = 2 * n * n;
  int i;
  for (i = 1; i <= 8; i++)
    if (sol(i)) break;
  printf("%d", B[1]);
  for (i = 2; i <= n; i++) printf(" %d", B[i]);
  printf("\n");
  return 0;
}
