#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double eps = 1e-8;
const double PI = acos(-1.0);
const int MAXN = 1e5 + 5;
const int MAXM = 2e6 + 5;
const int MOD = 1e9 + 7;
int sgn(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0)
    return -1;
  else
    return 1;
}
long long pw(long long a, long long n, long long mod) {
  long long ret = 1;
  while (n) {
    if (n & 1) ret = ret * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return ret;
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
void inc(long long &a, long long b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
void dec(long long &a, long long b) {
  a -= b;
  if (a < 0) a += MOD;
}
int mul(int a, int b) {
  long long c = 1ll * a * b;
  return c - c / MOD * MOD;
}
int n, mx, p[] = {2, 3, 5, 7, 11};
vector<int> ve;
int main() {
  scanf("%d", &n);
  mx = 2 * n * n;
  ve.push_back(1);
  while (1) {
    for (int i = 0; i < 5; i++) {
      for (int j = 0; j < ((int)(ve).size()); j++) {
        if (ve[j] * p[i] <= mx) ve.push_back(ve[j] * p[i]);
      }
      if (((int)(ve).size()) > n) break;
    }
    if (((int)(ve).size()) > n) break;
  }
  reverse((ve).begin(), (ve).end());
  for (int i = 0; i < n; i++) printf("%d ", ve[i]);
}
