怎么写线性SPJ
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}定义一个非空数组的“唯一元素”为该数组中只出现一次的元素。一个数组可能有多个“唯一元素”、也有可能没有“唯一元素”。
\hspace{15pt}定义一个数组的“种类数”为该数组中不同的元素的个数。

\hspace{15pt}定义一个数组为“有单数组”,当且仅当这个数组同时满足:
\hspace{23pt}\bullet\,数组的每一个元素都是 1n 之间的整数;
\hspace{23pt}\bullet\,数组的每一个非空连续子数组都存在至少一个“唯一元素”。
\hspace{15pt}现在,请构造一个由 n 个元素构成的、“种类数”最少的“有单数组”。

\hspace{15pt}连续子数组为从原数组中,连续的选择一段元素(可以全选、可以不选)得到的新数组。

输入描述:

\hspace{15pt}第一行输入一个整数 n \left(1 \leqq n \leqq 10^3 \right) 代表你所需要构造的数组中元素的数量。

输出描述:

\hspace{15pt}第一行输出一个整数,代表你所构造的数组的“种类数”。
\hspace{15pt}第二行输出 n 个整数 p_1, p_2, \dots, p_n \left(1 \leqq p_i \leqq n \right) 代表你所构造的数组。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2

输出

复制
2
1 2

说明

\hspace{15pt}在这个样例中,我们有且仅有两种构造思路,其一是构造两个元素相同的数组;其二是构造两个元素不同的数组。但是,对于第一种构造思路,长度为 2 的连续子数组不存在”唯一元素“,不满足“好数组”的定义。