#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
#include<ext/pb_ds/assoc_container.hpp>
#include<chrono>
using namespace chrono;
using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;

#define endl 			"\n"
#define forn(i,x1,n)     for(int i=x1; i<n; i++)
#define forit(it, m)    for(decltype(m)::iterator it = m.begin(); it!=m.end(); ++it)
#define ff              first
#define ss              second
#define int             long long
#define pb              push_back
#define mp              make_pair
#define pii             pair<int,int>
#define vi              vector<int>
#define mii             map<int,int>
#define pqb             priority_queue<int>
#define pqs             priority_queue<int,vi,greater<int> >
#define setbits(x1)      __builtin_popcountll(x1)
#define zrobits(x1)      __builtin_ctzll(x1)
#define mod             1000000007
#define inf             1e18
#define ps(x1,y)         fixed<<setprecision(y)<<x1
#define mk(arr,n,type)  type *arr=new type[n];
#define w(x1)            int x1; cin>>x1; while(x1--)
mt19937                 rng(chrono::steady_clock::now().time_since_epoch().count());


void zeus()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
}

bool prime[100001];
vector<int> prime_no;

void SieveOfEratosthenes(int n)
{
	memset(prime, true, sizeof(prime));

	for (int p = 2; p * p <= n; p++)
	{
		if (prime[p] == true)
		{
			prime_no.pb(p);
			for (int i = p * p; i <= n; i += p)
				prime[i] = false;
		}
	}


}

int32_t main() {

	zeus();
	SieveOfEratosthenes(100);
	int n; cin >> n;


	vector<int> ans;

	cout << 6 << " " << 10 << " " << 15 << " ";
	int cnt = 0;
	int i = 18;
	while (cnt < n - 3) {
		if (i % 6 == 0 || i % 10 == 0 || i % 15 == 0) {
			cout << i << " ";
			cnt++;
		}
		i++;
	}

}
#include <cstdio>
const int N = 2505;
int n, ans[N] = {0, 6, 10, 15}, tot, flag[10005];
int main() {
	scanf("%d", &n);
	tot = 3;
	for(int i = 1; i <= 3; i++) {
		for(int j = ans[i]*2; j+ans[i] <= 10000; j += ans[i]) {
			if(flag[j]) continue; flag[j] = 1;
			ans[++tot] = j;
			if(tot == n) break;
		}
		if(tot == n) break;
	}
	for(int i = 1; i <= n; i++) printf("%d ", ans[i]);
	return 0;
}