#include <bits/stdc++.h>
using namespace std;
vector<int> prime;
bool is_prime[300];
int num[200], ret[200], sub[200];
void Multi(int K) {
  for (int i = 0; i < 200; i++) ret[i] = 0;
  for (int i = 0; K > 0; i++) {
    int MM = K % 10;
    K /= 10;
    for (int j = 0; j < 200; j++) sub[j] = 0;
    for (int j = 0; j < 200; j++) {
      sub[j] += num[j] * MM;
      if (sub[j] > 9) {
        sub[j + 1] += sub[j] / 10;
        sub[j] %= 10;
      }
    }
    for (int j = 0; j + i < 200; j++) {
      ret[j + i] += sub[j];
    }
  }
  for (int i = 0; i < 200; i++) {
    if (ret[i] > 9) {
      ret[i + 1] += ret[i] / 10;
      ret[i] %= 10;
    }
  }
  for (int i = 0; i < 200; i++) num[i] = ret[i];
  return;
}
int main() {
  memset(is_prime, true, sizeof is_prime);
  is_prime[0] = is_prime[1] = false;
  for (int i = 2; i * i < 300; i++) {
    if (!is_prime[i]) continue;
    for (int j = i + i; j < 300; j += i) is_prime[j] = false;
  }
  for (int i = 0; i < 10000 && prime.size() <= 50; i++) {
    if (is_prime[i]) prime.push_back(i);
  }
  int N;
  scanf("%d", &N);
  if (N == 2) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 200; j++) num[j] = 0;
    num[0] = 1;
    for (int j = 0; j < N; j++) {
      if (i == j) continue;
      Multi(prime[j]);
    }
    bool showed_non_zero = false;
    for (int j = 199; j >= 0; j--) {
      if (num[j] != 0) showed_non_zero = true;
      if (showed_non_zero) printf("%d", num[j]);
    }
    if (!showed_non_zero) printf("0");
    printf("\n");
  }
}
