#P16616. [GCPC2026]garbled garden

[GCPC2026]garbled garden

题目描述

劳累一天后,Tessa 回到家,发现丈夫正得意地站在门口。他兴奋地宣布,自己已经把她的所有花都种进了花园。

然而,丈夫虽然确实把所有花都沿着花园边缘种好了,排列顺序却完全错误。玫瑰出现在本应种兰花的位置,风信子、大丽花和菊花也被胡乱夹在绣球花之间。

Tessa 之前已经给每朵花系上了数字标签。在正确的排列中,从左到右的标签应当是非递减的。同一种花的标签相同,因为同一种花内部的相对顺序并不重要。

花朵还很幼小,不能随意全部挖出后重新排列。Tessa 每次只能执行如下操作:

  1. 选择一个整数 mm,以及 mm 个互不相同的位置 p1,p2,,pmp_1,p_2,\ldots,p_m
  2. 先挖出位置 p1p_1 的花,将其暂时放进花盆,此时位置 p1p_1 为空;
  3. 对于 i=2,3,,mi=2,3,\ldots,m,将位置 pip_i 的花移动到前一朵花留下的空位 pi1p_{i-1}
  4. 最后,将花盆中的花种到剩余的空位 pmp_m

由于花朵十分脆弱,同一朵花在一次操作中至多被使用一次,因此 p1,p2,,pmp_1,p_2,\ldots,p_m 必须互不相同。

请确定将所有标签排列为非递减顺序所需的最少操作次数,并输出一种达到最少次数的操作方案。

样例 2 的一种操作过程

图 G.1:第二组样例答案的操作过程。

输入格式

第一行包含一个整数 nn2n50002\le n\le 5000),表示花朵数量。

第二行包含 nn 个整数 t1,t2,,tnt_1,t_2,\ldots,t_n1tin1\le t_i\le n),其中 tit_i 表示位置 ii 上花朵的标签。

输出格式

第一行输出最少操作次数 kk0kn0\le k\le n)。可以证明,答案一定存在,并且至多需要 nn 次操作。

随后依次输出这 kk 次操作。对于每次操作,输出:

  • 一行一个整数 mm1mn1\le m\le n),表示本次移动的花朵数量;
  • 下一行输出 mm 个互不相同的整数 p1,p2,,pmp_1,p_2,\ldots,p_m1pin1\le p_i\le n),顺序应与题目描述中的操作顺序一致。

只要求操作次数最少,不要求所有操作中移动的花朵总数最少。

如果存在多种最优方案,可以输出任意一种。

样例 1

输入

3
2 3 1

输出

1
3
1 3 2

样例 2

输入

5
3 1 3 5 1

输出

1
3
4 1 5

样例 3

输入

4
2 1 4 3

输出

2
4
1 2 3 4
2
2 4