小L的构造2
题号:NC312007
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小L的科研毫无进展,于是他开始研究构造。
\hspace{15pt}小L有一个正整数 n,他想构造一个长度为 n排列^\texttt{[1]} p_1, p_2, \dots, p_n,使得该排列中任意相邻的三个元素中,都至少存在两个数不互质^\texttt{[2]}
\hspace{15pt}换言之,对于任意 1 \leq i \leq n-2,在集合 \{p_i, p_{i+1}, p_{i+2}\} 中存在两个不同的数 x, y,满足 \gcd(x, y) > 1
\hspace{15pt}如果存在这样的排列,请输出任意一个符合条件的方案;若不存在,直接输出 -1

【名词解释】
\hspace{15pt}长度为 n排列^\texttt{[1]}:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
\hspace{15pt}互质^\texttt{[2]}:多个整数的最大的共有约数(简称最大公约数,gcd)如果恰好为 1,被称为它们为互质的。例如,1230 的公约数有 1,2,3,6,其中最大的约数是 6,所以它们不是互质的;57 的公约数仅有 1,所以它们是互质的。

输入描述:

\hspace{15pt}输入一个正整数 n\left(3 \leq n \leq 10^6\right),表示排列的长度。

输出描述:

\hspace{15pt}如果不存在符合条件的排列,直接输出 -1。否则,在一行上输出 n 个整数,表示构造出的排列,整数之间用空格分隔。

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

输入

复制
4

输出

复制
3 4 2 1

说明

\hspace{15pt}在这个样例中,构造出的排列为 \{3, 4, 2, 1\}
\hspace{23pt}\bullet\,1 个相邻三元组为 \{3, 4, 2\}。其中 42 的最大公约数为 2 > 1,满足条件。
\hspace{23pt}\bullet\,2 个相邻三元组为 \{4, 2, 1\}。其中 42 的最大公约数为 2 > 1,满足条件。
\hspace{15pt}所有相邻三元组均满足条件,故答案合法。
示例2

输入

复制
5

输出

复制
-1

说明

\hspace{15pt}可以证明不存在满足条件的长度为 5 的排列。