#include <bits/stdc++.h>
using namespace std;
int prime[1100000], primesize, phi[11000000];
bool isprime[11000000];
int n;
void getlist(int listsize) {
  memset(isprime, 1, sizeof(isprime));
  isprime[1] = false;
  for (int i = 2; i <= listsize; i++) {
    if (isprime[i]) prime[++primesize] = i;
    for (int j = 1; j <= primesize && i * prime[j] <= listsize; j++) {
      isprime[i * prime[j]] = false;
      if (i % prime[j] == 0) break;
    }
  }
}
int main() {
  scanf("%d", &n);
  getlist(n + 1);
  if (n == 1 || n == 2)
    printf("1\n");
  else
    printf("2\n");
  for (int i = 2; i <= n + 1; i++) {
    if (isprime[i] == true)
      printf("1 ");
    else
      printf("2 ");
  }
  return 0;
}
