#include #include #define rep(i,n) for(int i=0;i vi; typedef vector vl; typedef vector> vvi; typedef vector> vvl; typedef long double ld; typedef pair P; ostream& operator<<(ostream& os, const modint& a) {os << a.val(); return os;} template ostream& operator<<(ostream& os, const static_modint& a) {os << a.val(); return os;} template istream& operator>>(istream& is, vector& v){int n = v.size(); assert(n > 0); rep(i, n) is >> v[i]; return is;} template ostream& operator<<(ostream& os, const pair& p){os << p.first << ' ' << p.second; return os;} template ostream& operator<<(ostream& os, const vector& v){int n = v.size(); rep(i, n) os << v[i] << (i == n - 1 ? "\n" : " "); return os;} template ostream& operator<<(ostream& os, const vector>& v){int n = v.size(); rep(i, n) os << v[i] << (i == n - 1 ? "\n" : ""); return os;} int main(){ int n; cin >> n; vector p = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}; vector ans(n); rep(i, n){ if(i == 0){ ans[0] = p[n - 2]; continue; } if(i == n - 1){ int x = p[0]; ans[i] = (ans[i - 1] + x) / x * x; continue; } int x = p[n - 1 - i] * p[n - 2 - i]; ans[i] = (ans[i - 1] + x) / x * x; if(i < n - 2){ while(ans[i] % p[n - 3 - i] == 0 or gcd(ans[i], ans[i - 1]) != p[n - 1 - i]){ ans[i] += x; } } } cout << ans; /* rep(i, n - 1){ cout << gcd(ans[i], ans[i + 1]) << ' '; } */ return 0; }