#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
typedef long long int ll;
const int M=100009;
int cnt=0;
int prime[2555];
int flag[M+1];
void prim()
{
	for(int i=2;i<=M;i++)
	{
		if(!flag[i])
		{
			cnt++;
			prime[cnt]=i;
			if(cnt==2502)break;
		}
		for(int j=1;j<=cnt&&i*prime[j]<=M;j++)
		{
			flag[i*prime[j]]=1;
			if(i%prime[j]==0)break;
		}
	}
}
int main()
{
	int n;
//	memset(flag,0,sizeof(flag));
//	prim(); 
	//int sum=0;
/*	for(int i=4;i<=cnt;i++)
	{
		if(prime[i]<=10000/6)sum++;
	}
	cout<<sum;*/
//	cout<<cnt; 
	scanf("%d",&n);
	int k1=n/3;
	int k2=n/3;
	int k4=n-k1-k2;
	int sum=0;
//	int i,j,k; 
//cout<<"6 ";
		for(int j=1;j<=10000;j++)
		{
			if(j%5==0)continue;
			if(6*j>10000)break;
			cout<<6*j<<" ";
			sum++;
			if(sum==(n-2))break;
		}
		//cout<<sum<<"\n";
		for(int j=1;j<=10000;j++)
		{
			if(j%3==0)continue;
			if(10*j>10000)break;
			cout<<10*j<<" ";
			sum++;
			if(sum==(n-1))break;
		}
	//	cout<<sum<<"\n";
		for(int j=1;j<=10000;j++)
		{
			if(j%2==0)continue;
			if(15*j>10000)break;
			cout<<15*j<<" ";
			sum++;
			if(sum==n)break;
		}
		//cout<<sum<<"\n";
		for(int j=sum;j<n;j++)
		{
		//	cout<<j-sum+1<<" ";
			cout<<30*(j-sum+1)<<" ";
		//	cout<<sum<<"\n"<<n<<"\n";
		}
	//	cout<<sum;
}

#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

#include <bits/stdc++.h>
using namespace std;
/* DEBUGGING */
void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define deb(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
#define deb(x...)
#endif
/* R/W */
template<class T> void _R(T &x) { cin >> x; }
void _R(int &x) { scanf("%d", &x); }
void _R(long long int &x) { scanf("%lld", &x); }
void _R(double &x) { scanf("%lf", &x); }
void _R(char &x) { scanf(" %c", &x); }
void _R(char *x) { scanf("%s", x); }
void R() {}
template<class T, class... U> void R(T &head, U &... tail) { _R(head); R(tail...); }
template<class T> void _W(const T &x) { cout << x; }
void _W(const int &x) { printf("%d", x); }
void _W(const long long int &x) { printf("%lld", x); }
void _W(const double &x) { printf("%.16f", x); }
void _W(const char &x) { putchar(x); }
void _W(const char *x) { printf("%s", x); }
template<class T,class U> void _W(const pair<T,U> &x) {_W(x.F); putchar(' '); _W(x.S);}
template<class T> void _W(const vector<T> &x) { for (auto i = x.begin(); i != x.end(); _W(*i++)) if (i != x.cbegin()) putchar(' '); }
void W() {}
template<class T, class... U> void W(const T &head, const U &... tail) { _W(head); putchar(sizeof...(tail) ? ' ' : '\n'); W(tail...); }
#ifdef HOME
 #define DEBUG(...) {printf("# ");printf(__VA_ARGS__);puts("");}
#else
 #define DEBUG(...)
#endif
/* MACROS */ 
typedef long long int ll;
 
typedef pair<int, int> pii;
typedef pair<ll,ll> pll;
 
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pii> vpii;
typedef vector<pll> vpll;

typedef map<int,int> mii;

#define  ff          first
#define  ss          second
#define  pb          push_back
#define  IOS         ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define  lb          lower_bound
#define  ub          upper_bound
#define  all(x)      (x).begin(), (x).end()
#define  lcm(x, y)   ((x) * (y) / __gcd(x, y))
#define  ps(x,y)     fixed<<setprecision(y)<<x
#define  setbit(x)   __builtin_popcountll(x)
#define  rep(i,a,b)  for(int i=a ; i<b ; ++i)
#define  repr(i,a,b) for(int i=a ; i>=b ; --i)

/* CONSTANTS */ 
#define PI 3.141592653589793
const ll MOD = 1e9 + 7;
const ll INF = 1000000000;
const ll MAX_N = 2e5 + 2;

void solve(){
    int n; cin >> n;
    if(n>=0) cout << n;
    else cout << "0";
}

int main(){
    IOS;
    solve();
}

// Always take complete input
// Use MOD wisely