#include <bits/stdc++.h>
using namespace std;
#define db double
const int N = 100020;

int n, a[N];

int main() {
	// freopen(".in", "r", stdin);
	// freopen(".out", "w", stdout);
	
	cin >> n;
	for (int i = 1; i <= n; i++) {
		int Max = 0;
		for (int j = 1; j <= (int)sqrt((db)i); j++)
			if (i % j == 0) {
				Max = max(Max, a[j]);
				Max = max(Max, a[i / j]);
			}
		a[i] = Max + 1;
	}
	for (int i = 1; i <= n; i++) printf("%d ", a[i]);
	
	// fclose(stdin);
	// fclose(stdout);
	return 0;
}

#include<bits/stdc++.h>
#define ll long long 
#define mp make_pair 
#define f(i,n) for(int i=0;i<n;i++) 
#define F first 
#define S second 
#define pb push_back 

using namespace std;


ll dp[205][15];

ll fun(ll len, ll parts){
	if(len<parts)
		return 0;
	
	if(parts==1)
		return 1;
		
	if(dp[len][parts]!=-1)
		return dp[len][parts];
	
	ll res = 0;
	
	for(int i=1;i<=len;i++){
		res = res + fun(len-i,parts-1);
	}
	
	dp[len][parts] = res;
	
	return res;
}

void test(){
	ll l;
	cin>>l;
	memset(dp,-1,sizeof(dp));
	cout<<fun(l,12)<<"\n";
}

int main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int tests=1;
	// cin>>tests;
	while(tests--){
		test();
	}
}
