#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
const int inf = 1e9 + 7;
int pr[] = {2, 3, 5, 7, 11, 13};
int up;
int tot[105];
int q[50000005], vis[1000005];
int sz;
pair<int, int> srt[1000005];
void dfs(int x, int y) {
  if (y == sz) {
    q[x] = 1;
    return;
  }
  dfs(x, y + 1);
  x *= pr[y];
  while (x <= up) {
    dfs(x, y + 1);
    x *= pr[y];
  }
}
int ans[N];
int main() {
  int n;
  scanf("%d", &n);
  up = n * n * 2;
  sz = 6;
  if (n <= 100)
    sz = 4;
  else if (n <= 200)
    sz = 5;
  dfs(1, 0);
  int cnt = 0;
  for (int i = (1); i <= (up); i++)
    if (q[i]) {
      cnt++;
      srt[cnt].second = i;
      for (int j = (0); j <= (sz - 1); j++)
        if (i % pr[j] == 0) {
          srt[cnt].first ^= (1 << (j - 1));
          tot[j]++;
        }
    }
  sort(srt + 1, srt + 1 + cnt);
  int cur = cnt;
  for (int i = (1); i <= (cnt); i++) {
    int flag = 1;
    for (int j = (0); j <= (sz - 1); j++)
      if (srt[i].second % pr[j] == 0)
        if (tot[j] <= (n + 1) / 2) {
          flag = 0;
          break;
        }
    if (flag && cur > n) {
      cur--;
      vis[i] = 1;
      for (int j = (0); j <= (sz - 1); j++)
        if (srt[i].second % pr[j] == 0) tot[j]--;
    }
  }
  for (int i = (1); i <= (cnt); i++)
    if (!vis[i]) printf("%d ", srt[i].second);
  puts("");
  return 0;
}
