#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
using ll = long long;
using P = pair<ll, ll>;
const ll INF = ll(10000);

void solve(long long N) {
    set<ll> ans;

    N -= 3;

    for (ll i = 12; i <= INF; i += 6) {
        ans.insert(i);
    }
    for (ll i = 20; i <= INF; i += 10) {
        ans.insert(i);
    }
    for (ll i = 30; i <= INF; i += 15) {
        ans.insert(i);
    }

    cout << 6 << " " << 10 << " " << 15 << " ";
    for (ll a : ans) {
        if (N == 0) {
            break;
        }
        cout << a << " ";
        --N;
    }
    cout << endl;
}

// Generated by 1.1.7.1 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
int main() {
    long long N;
    scanf("%lld", &N);
    solve(N);
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define deb(x) cout<< #x << " " << x << "\n";
#define MAX 9223372036854775807
#define MIN -9223372036854775807
#define setbits(n) __builtin_popcountll(n)
#define mkunique(a) a.resize(unique(a.begin(),a.end())-a.begin()); //need to sort
#define print(s) for(ll u: s) cout<<u<<" "; cout<<"\n";
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const ll mod=1e9+7;
 

 
int main(){
 
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    ll TT=clock();
 
    vector<ll> a;
    ll lim=10000;
    set<ll> s;
    ll val=3*5;
    ll j=1;
    while(1){
        if(s.find(val*j)!=s.end()) {j++;continue;}
        if(val*j>lim) break;
        a.pb(val*j);
        s.insert(val*j);
        j++;
    }
    //cout<<a.size()<<"\n";
    val=2*3; j=1;
    while(1){
        if(s.find(val*j)!=s.end()) {j++;continue;}
        if(val*j>lim) break;
        a.pb(val*j);
        s.insert(val*j);
        j++;
    }
    //cout<<a.size()<<"\n";
    val=2*5; j=1;
    while(1){
        if(s.find(val*j)!=s.end()) {j++;continue;}
        if(val*j>lim) break;
        a.pb(val*j);
        s.insert(val*j);
        j++;
    }
    ll n;
    cin>>n;
    vector<ll> b;
    if(n<=666){
        for(ll i=0;i<n-2;i++)
            b.pb(a[i]);
        b.pb(2*3); b.pb(2*5);
    }
    else if(n<=1999){
        for(ll i=0;i<n-1;i++)
            b.pb(a[i]);
        b.pb(2*5);
    }
    else{
        for(ll i=0;i<n;i++)
            b.pb(a[i]);
    }
    ll gc=b[0];
    for(ll i=0;i<n;i++){
        gc=__gcd(gc,b[i]);
        cout<<b[i]<<" ";
    }
    assert(gc==1);
 
 
    cerr<<"\n\nTIME: "<<(long double)(clock()-TT)/CLOCKS_PER_SEC<<" sec\n";
    TT = clock();
    return 0;
}