Fox And Dinner
题号:NC237949
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

小狐狸Ciel参加了一个派对,加上他自己这个派对里总共有n只狐狸,每只狐狸有一个年龄a_i

它们想要在几张圆桌旁吃晚饭,你需要帮忙分配座位,使得满足以下要求:

1. 每只狐狸都在其中
2. 每张桌子边至少有3只狐狸
3. 任意两只相邻的狐狸的年龄之和为质数(圆桌上每只狐狸都有2只相邻的狐狸)

输入描述:

第一行一个正整数,表示狐狸个数。

第二行n个正整数,表示每只狐狸的年龄。

输出描述:

如果不可能有满足要求的分配方式,输出"Impossible"。

否则,第一行输出一个正整数m表示桌数。

然后输出m行,每行先一个整数k表示这桌的狐狸数,然后k个正整数表示这桌的狐狸编号(按照顺序输出,但从哪个编号开始没有关系)。

如果有多组解,输出任意一组。
示例1

输入

复制
4
3 4 8 9

输出

复制
1
4 1 2 4 3

说明

只需要一桌,顺序为3-8-9-4,相邻的和分别是11,17,13,7,全都是质数。
示例2

输入

复制
5
2 2 2 2 2

输出

复制
Impossible
示例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