#include <bits/stdc++.h>
using namespace std;

int main(){
  int N;
  cin >> N;
  int cnt = 0;
  int tmp1 = 0;
  int tmp2 = 0;
  int tmp3 = 0;
  while(tmp1 <= 10000){
    tmp1 += 6;
    if((tmp1 % 5 != 0)&&(tmp1 <= 10000)){
      cout << tmp1 << " ";
      cnt++;
      if(cnt == N) break;
    }
    tmp2 += 10;
    if((tmp2 % 3 != 0)&&(tmp2 <= 10000)){
      cout << tmp2 << " ";
      cnt++;
      if(cnt == N) break;
    }
    tmp3 += 15; 
    if(tmp3 <= 10000){
      cout << tmp3 << " ";
      cnt++;
      if(cnt == N) break;
    }
  }
  cout << endl;
}
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<long long> VL;
typedef vector<vector<long long>> VVL;
typedef pair<int,int> Pair;
typedef tuple<int,int,int> tpl;

#define ALL(a)  (a).begin(),(a).end()
#define SORT(c) sort((c).begin(),(c).end())
#define REVERSE(c) reverse((c).begin(),(c).end())
#define EXIST(m,v) (m).find((v)) != (m).end()
#define LB(a,x) lower_bound((a).begin(), (a).end(), x) - (a).begin()
#define UB(a,x) upper_bound((a).begin(), (a).end(), x) - (a).begin()

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)
#define RFOR(i,a,b) for(int i=(a)-1;i>=(b);--i)
#define RREP(i,n) RFOR(i,n,0)

#define en "\n"

constexpr double EPS = 1e-9;
constexpr double PI  = 3.1415926535897932;
constexpr int INF = 2147483647;
constexpr long long LINF = 1LL<<60;
constexpr long long MOD = 1000000007; // 998244353;

template<class T> inline bool chmax(T& a, T b){if(a<b){a=b;return true;}return false;}
template<class T> inline bool chmin(T& a, T b){if(a>b){a=b;return true;}return false;}

struct SieveEratosthenes{
    vector<int> min_fact;

    SieveEratosthenes(int N){
        _build(N);
    }

    void _build(int N){
        min_fact.resize(N+1);
        for(int i=0; i<=N; i++) min_fact[i] = i;
        
        min_fact[0] = min_fact[1] = -1;

        for(int i=2; i*i<=N; i++){
            for(int j=i*i; j<=N; j+=i){
                if(i < min_fact[j])
                    min_fact[j] = i;
            }
        }
    }

    bool is_prime(int x){
        return min_fact[x] == x;
    }

    vector<pair<int,int>> factorize(int x){
        vector<pair<int,int>> ret;
        while(x>1){
            if(ret.empty() || ret.back().first != min_fact[x])
                ret.emplace_back(min_fact[x], 1);
            else
                ret.back().second++;

            x /= min_fact[x];
        }

        return ret;
    }
};

vector<long long> make_divisors(long long n){
    vector<long long> divisors;
    for(long long i=1; i*i<=n; i++){
        if(n%i == 0){
            divisors.push_back(i);
            if(i*i != n) divisors.push_back(n/i);
        }
    }
    // sort(divisors.begin(), divisors.end());
    return divisors;
}

int f(int x, int p){
    int ret = 0;
    while(x%p == 0){
        ret++;
        x /= p;
    }
    return ret;
}

void Main(){
    int N; cin >> N;
    if(N==3){
        cout << "84 105 10" << en;
        return;
    }
    VI cand;
    FOR(i,1,10001){
        int n2=f(i,2),n3=f(i,3),n5=f(i,5);
        int c = 0; if(n2==0) c++;
        if(n3==0) c++;
        if(n5==0) c++;

        if(c<=1) cand.push_back(i);
    }


    VI A;
    REP(i,N) A.push_back(cand[i]);
    REP(i,N) cout << A[i] << " \n"[i==N-1];
    return;
}

int main(void){
    cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);cout<<fixed<<setprecision(15);
    int t=1; //cin>>t;
    while(t--) Main();
    return 0;
}