#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void debug_out(const char* name, Arg1&& arg1) {
  cout << name << " = " << arg1 << " ]" << '\n';
}
template <typename Arg1, typename... Args>
void debug_out(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cout.write(names, comma - names) << " = " << arg1 << ",";
  debug_out(comma + 1, args...);
}
mt19937_64 rang(
    chrono::high_resolution_clock::now().time_since_epoch().count());
const long long mod = 1e9 + 7;
const long long N = 3e5, M = N;
const long long num = 1e7;
bool comp[num];
vector<long long> primes;
void sieve() {
  memset(comp, false, sizeof(comp));
  primes.clear();
  bool done = false;
  for (long long i = 2; i < num; i++) {
    if (!comp[i]) {
      primes.push_back(i);
      if ((i * i) > num) {
        done = true;
      }
      if (!done) {
        for (long long j = i * i; j < num; j += i) {
          comp[j] = true;
        }
      }
    }
  }
}
void Solve_main() {
  sieve();
  long long n;
  cin >> n;
  assert(n < ((long long)(primes).size()));
  for (long long i = (0); i < (n); ++i) {
    cout << primes[i] << ' ';
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  srand(chrono::high_resolution_clock::now().time_since_epoch().count());
  long long tc = 1;
  for (long long i = 0; i < tc; i++) {
    Solve_main();
  }
  cerr << "[time:" << 1.0 * clock() / CLOCKS_PER_SEC << "s] ";
  return 0;
}
