#include <bits/stdc++.h>
using namespace std;
const int SIZE = 5 << 10;
bool npr[SIZE];
vector<int> primes;
int n, bound;
int k;
vector<int> all;
bool Solve(int u, int curr) {
  if (u == k) {
    all.push_back(curr);
    return (all.size() >= n);
  }
  for (int i = curr; i <= bound; i *= primes[u])
    if (Solve(u + 1, i)) return true;
  return false;
}
bool Validate(const vector<int> &arr) {
  int n = arr.size();
  for (int i = 0; i < primes.size(); i++) {
    int cnt = 0;
    for (int j = 0; j < arr.size(); j++) cnt += (arr[j] % primes[i]) == 0;
    if (cnt == 0) continue;
    if (2 * cnt < n) {
      ((void)0);
      return false;
    }
  }
  for (int j = 0; j < arr.size(); j++)
    if (arr[j] > 2 * n * n) {
      ((void)0);
      return false;
    }
  return true;
}
bool DoAll(int number) {
  n = number;
  bound = 2 * n * n;
  for (k = 2; k < primes.size(); k++) {
    all.clear();
    Solve(0, 1);
    if (all.size() == n) break;
  }
  if (!Validate(all)) return false;
  return true;
}
int main() {
  npr[0] = npr[1] = true;
  for (int i = 2; i * i < SIZE; i++)
    if (!npr[i])
      for (int j = i * i; j < SIZE; j += i) npr[j] = true;
  for (int i = 0; i < SIZE; i++)
    if (!npr[i]) primes.push_back(i);
  scanf("%d", &n);
  DoAll(n);
  for (int i = 0; i < n; i++) printf("%d ", all[i]);
  return 0;
}
