#include <bits/stdc++.h>
using namespace std;
const int MAX_LEN = 105;
class BigI {
  int d[MAX_LEN];
  int len;

 public:
  BigI(int v = 0) {
    memset(d, 0, sizeof(d));
    len = 0;
    while (v > 0) {
      d[len++] = v % 10;
      v /= 10;
    }
    if (len == 0) len = 1;
  }
  BigI operator*(const BigI other) const {
    BigI ret;
    ret.len = len + other.len - 1;
    int i, j;
    for (i = 0; i < len; i++) {
      for (j = 0; j < other.len; j++) {
        ret.d[i + j] += d[i] * other.d[j];
      }
    }
    for (i = 0; i < ret.len; i++) {
      if (ret.d[i] > 9) {
        ret.d[i + 1] += ret.d[i] / 10;
        ret.d[i] %= 10;
      }
    }
    if (ret.d[ret.len] > 0) {
      ret.len++;
    }
    while (ret.len > 1 && ret.d[ret.len - 1] == 0) {
      ret.len--;
    }
    return ret;
  }
  void print() {
    for (int i = len - 1; i >= 0; i--) {
      printf("%d", d[i]);
    }
  }
};
int y[500], p[500];
int prime() {
  int t = 0;
  int i, j;
  memset(y, 0, sizeof(y));
  y[0] = y[1] = 1;
  for (i = 2; i * i < 500; i++) {
    if (!y[i]) {
      for (j = i * i; j < 500; j += i) y[j] = 1;
    }
  }
  for (i = 2; i < 500; i++) {
    if (!y[i]) {
      p[t++] = i;
    }
  }
  return t;
}
BigI d[100];
int main() {
  int n;
  int t = prime();
  int i, j;
  BigI pp;
  while (scanf("%d", &n) != EOF) {
    if (n <= 2) {
      printf("-1\n");
      continue;
    }
    for (i = 0; i < n; i++) {
      d[i] = p[i];
    }
    for (j = n - 1; j >= 0; j--) {
      pp = 1;
      for (i = 0; i < n; i++)
        if (j != i) {
          pp = pp * d[i];
        }
      pp.print();
      printf("\n");
    }
  }
  return 0;
}
