题号:NC237949
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
小狐狸Ciel参加了一个派对,加上他自己这个派对里总共有

只狐狸,每只狐狸有一个年龄

。
它们想要在几张圆桌旁吃晚饭,你需要帮忙分配座位,使得满足以下要求:
1. 每只狐狸都在其中
2. 每张桌子边至少有3只狐狸
3. 任意两只相邻的狐狸的年龄之和为质数(圆桌上每只狐狸都有2只相邻的狐狸)
输入描述:
第一行一个正整数
,表示狐狸个数。
第二行
个正整数
,表示每只狐狸的年龄。
输出描述:
如果不可能有满足要求的分配方式,输出"Impossible"。
否则,第一行输出一个正整数
表示桌数。
然后输出
行,每行先一个整数
表示这桌的狐狸数,然后
个正整数表示这桌的狐狸编号(按照顺序输出,但从哪个编号开始没有关系)。
如果有多组解,输出任意一组。
示例1
说明
只需要一桌,顺序为
,相邻的和分别是
,全都是质数。
示例3
输入
复制
12
2 3 4 5 6 7 8 9 10 11 12 13
输出
复制
1
12 1 2 3 6 5 12 9 8 7 10 11 4
示例4
输入
复制
24
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
输出
复制
3
6 1 2 3 6 5 4
10 7 8 9 12 15 14 13 16 11 10
8 17 18 23 22 19 20 21 24