Bajtocka 技术学校(简称 BST)的毕业生们聚集在学校前的广场上拍摄毕业合影。所有人排成一排,位置从左到右依次编号为 $1$ 到 $n$,其中 $n$ 是今年的毕业生人数。
摄影师决定重新排列照片中的人员,使他们按身高升序排列。最矮的人应该站在最左侧,最高的人应该站在最右侧。幸运的是,今年毕业生的身高各不相同。
为了避免混乱,人员的调动将以有序的方式进行。在每一轮中,摄影师会念出一串位置编号。处于这些位置的人员将按照念出位置的顺序依次走出队列,来到广场中央。随后,摄影师会重复相同的编号列表。广场中央的人员将按照与走出队列时相反的顺序,回到刚才念出的位置上。
我们希望以最少的轮数将所有毕业生按身高升序排列。你的任务是规划调动过程,并向摄影师提供他在每一轮中应该念出的位置编号列表。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 3000$),表示毕业生人数。
接下来的 $n$ 行,每行包含一个整数 $h_1, h_2, \dots, h_n$ ($1 \le h_i \le 3000$),表示从左到右站立的人员的身高(单位:毫米)。所有身高互不相同。
输出格式
第一行应包含一个整数 $r$,表示将所有人按身高升序排列所需的最少轮数。
接下来的 $2r$ 行应包含这些轮次的描述。每一轮描述的第一行应包含一个整数 $p_i$ ($1 \le p_i \le n$),表示第 $i$ 轮中念出的位置编号数量。描述的第二行应包含 $p_i$ 个位置编号,按念出的顺序排列。同一轮中的位置编号不能重复。
如果存在多种达到相同(最小)轮数的方案,输出其中任意一种即可。
样例
输入 1
5 1670 2011 1560 1232 1447
输出 1
1 5 2 1 3 4 5
输入 2
6 1556 1449 1863 2014 1333 1220
输出 2
2 5 5 6 1 4 3 4 1 2 3 4
说明
样例说明:在第一个样例中,一轮就足够了。所有毕业生按身高顺序 $[2011, 1670, 1560, 1232, 1447]$ 走到广场中央。然后,这些人以相反的顺序回到位置 $2, 1, 3, 4$ 和 $5$。最终顺序为 $[1232, 1447, 1560, 1670, 2011]$,即升序排列。
在第二个样例中,我们可以用两轮完成,并且可以证明无法用更少的轮数完成。第一轮后的身高顺序为 $[1556, 1449, 1333, 1220, 1863, 2014]$,第二轮后的顺序为 $[1220, 1333, 1449, 1556, 1863, 2014]$。