#include <bits/stdc++.h>
using namespace std;
vector<string> token(string a) {
  vector<string> w;
  a.push_back(' ');
  while (!a.empty()) {
    w.push_back(a.substr(0, a.find(" ")));
    a = a.substr(a.find(" ") + 1, a.size() - 1);
  }
  return w;
}
map<string, int> mapik;
vector<string> amapik;
int dodaj(string a) {
  if (mapik.count(a) == 0) {
    mapik[a] = mapik.size() - 1;
    amapik.push_back(a);
  }
  return mapik[a];
}
char tmp_str[1000];
string scanf_string() {
  scanf("%s", tmp_str);
  return tmp_str;
}
const int N = 1000;
int primes[N];
int primen;
void calc_primes() {
  primes[primen++] = 2;
  for (int i = 3; i < N * N; i++) {
    int ok = 1;
    for (int i2 = 0; i2 < primen; i2++) {
      if (i % primes[i2] == 0) {
        ok = 0;
        break;
      }
    }
    if (ok) primes[primen++] = i;
    if (primen >= N) break;
  }
}
int n;
int main() {
  calc_primes();
  scanf("%d", &n);
  if (n == 2)
    printf("-1\n");
  else if (n < 5) {
    long long cur = 2;
    long long killer = 3;
    for (int i = 0; i < n - 1; i++) {
      printf("%I64d\n", cur * primes[n - i + 1]);
      killer *= primes[n - i + 1];
      cur = cur * 2;
    }
    printf("%I64d\n", killer);
  } else {
    int dwa = n / 4 + n % 4;
    long long cur = 27 * 17 * 23 * 2;
    for (int i = 0; i < dwa; i++) {
      printf("%I64d\n", cur);
      cur = cur * 2;
    }
    int trzy = n / 4;
    cur = 27 * 13 * 19 * 3;
    for (int i = 0; i < trzy; i++) {
      printf("%I64d\n", cur);
      cur = cur * 3;
    }
    int piec = n / 4;
    cur = 23 * 11 * 19 * 5;
    for (int i = 0; i < piec; i++) {
      printf("%I64d\n", cur);
      cur = cur * 5;
    }
    int siedem = n / 4;
    cur = 11 * 13 * 17 * 7;
    for (int i = 0; i < siedem; i++) {
      printf("%I64d\n", cur);
      cur = cur * 7;
    }
  }
  return 0;
}
