智乃与三元环
题号:NC231600
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

心爱想让智乃喊自己姐姐,但是智乃是一个害羞的女孩子,觉得这样太羞耻了,于是智乃抛出一道题目,如果心爱想出来了,就答应心爱的要求。 聪明的心爱当然是一下子就想出来了,那么你会写这道题吗?

智乃给出一个包含 n 个点的图,点的编号分别为1,2,3......,n, 两点编号如果互质(即最大公约数为1)则连一条边,现在你要用数量最少的三元环去覆盖所有的点,每条边只能用一次,但一个点可以覆盖多次。 请输出最少的三元环个数以及覆盖方案(答案可能有很多,输出任意一种),如果不存在合法方案则输出-1。

输入描述:

第一行包含一个正整数 n (3≤n≤1e5),表示点的个数。

输出描述:

第一行输出一个整数 k ,表示三元环个数,如果不存在方案则输出-1。接下来有 k 行,每行三个数表示一个三元环。
示例1

输入

复制
3

输出

复制
1
1 2 3
示例2

输入

复制
4

输出

复制
-1

备注:

形如1->2->3->1的环称为三元环。