#include <bits/stdc++.h>
#define i64 long long
#define sz(a) int((a).size())
#define all(a) (a).begin(), (a).end()
#define rep(i, a, b) for (int i = (a); i < (b); ++i)
#define per(i, a, b) for (int i = (b) - 1; i >= (a); --i)
using namespace std;

const int N = 1e5 + 1;
int n, sp[N];
vector<int> prime;
bool vis[N];

void sieve() {
	vis[1] = true;
	rep(i, 2, n + 1) {
		if (not vis[i]) {
			sp[i] = 1;
			prime.push_back(i);
		}
		for (const int &p : prime) {
			if (i * p > n) {
				break;
			}
			vis[i * p] = true;
			sp[i * p] = sp[i] + 1;
			if (i % p == 0) {
				break;
			}
		}
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	sieve();
	rep(i, 1, n + 1) {
		cout << sp[i] + 1 << ' ';
	}
	cout << '\n';
	return 0; 
}
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
    
    ll n;
    cin >> n;

    cout <<n-1;
    
    return 0;
    

}

