import sys, time, random, heapq, math, itertools from collections import deque, Counter, defaultdict #from sortedcontainers import SortedSet, SortedList from bisect import bisect, bisect_left, bisect_right import heapq as hq from functools import cache, cmp_to_key def debug(*x):print('debug:',*x, file=sys.stderr) sys.setrecursionlimit(300000) input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 61 - 1 mod = 998244353 def eratosthenes(n): is_prime = ([False, True] * (n//2+1))[0: n+1] is_prime[1] = False is_prime[2] = True for i in range(3, n+1, 2): if not(is_prime[i]): continue if i*i > n: break for k in range(i*i, n+1, i): is_prime[k] = False return [i for i in range(n+1) if is_prime[i]] N = ii() p = eratosthenes(30) p = p[:N-1] SUM = 1 for i in range(N-1): SUM *= p[i] S = [] for i in range(N-1): S.append(SUM//p[i]) S.append(SUM) print(*S)