#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
const int inf = 0x3f3f3f3f;
const int maxn = 5e5 + 5;
const int maxm = 305;
const int mod = 1e9 + 9;
int n;
int cnt = 0;
bool vis[maxn];
int prime[maxn];
int a[maxn];
vector<int> ans;
void get_prime() {
  int up = n;
  memset(vis, 0, sizeof(vis));
  vis[1] = 1;
  for (int i = 2; i <= up; i++) {
    if (!vis[i]) prime[++cnt] = i, a[i] = i;
    for (int j = 1; j <= cnt && i * prime[j] <= up; j++) {
      vis[i * prime[j]] = 1;
      a[i * prime[j]] = prime[j];
      if (i % prime[j] == 0) break;
    }
  }
}
int main() {
  scanf("%d", &n);
  get_prime();
  for (int i = 2; i <= n; i++) ans.push_back(i / a[i]);
  sort(ans.begin(), ans.end());
  for (auto x : ans) printf("%d ", x);
  puts("");
  return 0;
}
