#include<stdio.h>
//筛选法 求 n 以内的素数
#define NUM 1000
int main()
{
	int n = 0;
	//多组输入
	while (~scanf("%d", &n))//~EOF = 0//为假
	{
		int arr[NUM] = { 0 };
		//将 2 ~ n 之间的正整数 存入数组中
		for (int i = 2; i <= n; i++)
		{
			arr[i] = i;//对应 存储
		}

		//筛选法
		for (int i = 2; i <= n; i++)
		{
			for (int j = 2; j <= n; j++)//不断遍历数组中的元素
			{
				if (i == j)//碰到 自身除以自身 就跳过(素数 是只能被 1 和 它自身 整除的数)
				{
					continue;
				}
				if (arr[j] % i == 0)
				{
					arr[j] = 0;//将 不是 素数的数 赋值为 0
				}
			}
		}
		//输出
		int cnt = 0;//计数器  //统计 数组中被 清零的元素的个数,即 不是素数的数
		for (int i = 2; i <= n; i++)
		{
			if (arr[i] == 0)
			{
				cnt++;
				continue;
			}
			if (i == 2)
			{
				printf("%d ", 2);
			}
			else
			{
				printf("%d ", arr[i]);
			}
		}
		printf("\n%d\n", cnt);
		
	}

	return 0;
}