Problem:
Score : 600 points

Problem Statement

Nagase is a top student in high school. One day, she's analyzing some properties of special sets of positive integers.

She thinks that a set S = \{a_{1}, a_{2}, ..., a_{N}\} of distinct positive integers is called special if for all 1 \leq i \leq N, the gcd (greatest common divisor) of a_{i} and the sum of the remaining elements of S is not 1.

Nagase wants to find a special set of size N. However, this task is too easy, so she decided to ramp up the difficulty. Nagase challenges you to find a special set of size N such that the gcd of all elements are 1 and the elements of the set does not exceed 30000.

Constraints

3 \leq N \leq 20000

Input

Input is given from Standard Input in the following format:

N

Output

Output N space-separated integers, denoting the elements of the set S. S must satisfy the following conditions :

The elements must be distinct positive integers not exceeding 30000.

The gcd of all elements of S is 1, i.e. there does not exist an integer d > 1 that divides all elements of S.

S is a special set.

If there are multiple solutions, you may output any of them. The elements of S may be printed in any order. It is guaranteed that at least one solution exist under the given contraints.

Sample Input 1

3

Sample Output 1

2 5 63

\{2, 5, 63\} is special because gcd(2, 5 + 63) = 2, gcd(5, 2 + 63) = 5, gcd(63, 2 + 5) = 7. Also, gcd(2, 5, 63) = 1. Thus, this set satisfies all the criteria.

Note that \{2, 4, 6\} is not a valid solution because gcd(2, 4, 6) = 2 > 1.

Sample Input 2

4

Sample Output 2

2 5 20 63

\{2, 5, 20, 63\} is special because gcd(2, 5 + 20 + 63) = 2, gcd(5, 2 + 20 + 63) = 5, gcd(20, 2 + 5 + 63) = 10, gcd(63, 2 + 5 + 20) = 9. Also, gcd(2, 5, 20, 63) = 1. Thus, this set satisfies all the criteria.

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>

using namespace std;

#define PB push_back
#define MP make_pair
#define X first
#define Y second

#define cil(a,b) ( ((a)%(b) == 0)?((a)/(b)):((a)/(b)+1) )
#define err(x) cerr << #x << " = " << x << endl;
#define forall(i,a,b) for(int i=a;i<b;i++)
#define foreach(v, c) for(typeof((c).begin())v=(c).begin();v!=(c).end();++v)
#define read(a) freopen(a,"r",stdin)
#define write(a) freopen(a,"w",stdout)
#define ff first
#define ss second
#define pb push_back
#define mp make_pair

typedef long long ll;
typedef long long l;
typedef double db;
typedef vector<int> vi;
typedef vector<long long> vll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<double,double> pdd;
typedef vector<pii> vii;

clock_t start;
void Time(bool timeIt) {
	if (!timeIt) return;
	clock_t end = clock();
	double elapsed_time = ((db)end - (db)start) / (db)CLOCKS_PER_SEC;
	fprintf(stderr, "Time elapsed = %0.4lf\n", elapsed_time); 
}

#define LINF (long long)1e18
#define EPS 1e-9
#define INF 1000000007ll
#define SIZE 300010
#define MAX_A 1000010
#define LIM 29000

int arr[SIZE];
int main() {
	start = clock();

	arr[1] = 2;
	arr[2] = 3;
	arr[3] = 25;
	arr[4] = 30;
	for (int i = 5 ; i < SIZE ; ++i) {
		arr[i] = arr[i - 1] + 30;
	}

	int n;
	cin >> n;

	if (n < 1000) {
		for (int i = 1 ; i <= n ; ++i) {
			cout << arr[i] << " ";
		}
		cout << endl;
	}
	else {
		//cout << 2 << " " << 3 << " ";
		vi num;
		num.PB(2);
		num.PB(3);
		ll sum = 5;
		for (int i = 4 ; i <= LIM ; ++i) {
			if (i % 2 == 0 || i % 3 == 0) {
				sum += i;
				num.PB(i);
				--n;
			}
			if (n == 0) break;
		}

		if (sum % 6 == 0) {
			for (int i = 0 ; i < num.size() ; ++i) cout << num[i] << " ";
			cout << endl;
		}
		else if (sum % 6 == 2) {
			for (int i = 0 ; i < num.size() ; ++i) {
				if (num[i] != 8) cout << num[i] << " ";
				else cout << num.back() + 6 - (num.back() % 6) << " ";
			}
			cout << endl;
		}
		else if (sum % 6 == 3) {
			for (int i = 0 ; i < num.size() ; ++i) {
				if (num[i] != 9) cout << num[i] << " ";
				else cout << num.back() + 6 - (num.back() % 6) << " ";
			}
			cout << endl;
		}
		else if (sum % 6 == 4) {
			for (int i = 0 ; i < num.size() ; ++i) {
				if (num[i] != 10) cout << num[i] << " ";
				else cout << num.back() + 6 - (num.back() % 6) << " ";
			}
			cout << endl;
		}
		else if (sum % 6 == 5) {
			for (int i = 0 ; i < num.size() ; ++i) {
				if (num[i] != 9) cout << num[i] << " ";
				else cout << num.back() + 6 - (num.back() % 6) + 4 << " ";
			}
			cout << endl;
		}
	}

	Time(true);
	return 0;
}