#Lutece1603. BanG Dreamer

BanG Dreamer

Migrated from Lutece 1603 BanG Dreamer

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

AutSky_JadeK 发现网上很多人沉迷邦邦手游无法自拔,他想知道这有什么好玩的。

这天,他发现每张邦邦的卡片有一个整数的稀有度,它们排成了一个序列。
他想知道,你最少能将这个卡片序列不重复,不遗漏地划分成多少个堆型子序列
一个序列S={s1,s2,...,sn}S=\{s_1,s_2,...,s_n\}是一个“堆型序列”当且仅当,存在一个有nn个结点的二叉树,其每个结点与该序列的元素一一对应,
而且对于该二叉树的每个非根结点sis_i和它的父节点sjs_j,满足sjsis_j\leq s_i并且j<ij<i

子序列的定义是,其是某个序列删除掉任意数量元素之后,所剩下的部分。并且不改变其原有的顺序。

Input

输入包含多组数据,第一行是总数据组数TT
每组数据的第一行是一个整数nn,代表卡片数,
每组数据的第二行是这个卡片序列的稀有度a1,a2,...,ana_1,a_2,...,a_n

Output

对于每组数据,先输出一行,包含一个整数mm,代表最少的堆型子序列数。
接下来mm行,第ii行先输出一个整数CiC_i,代表该堆型子序列的长度,
然后在同一行输出递增的CiC_i个整数Pi1,Pi2,...,PiCiP_{i1}, P_{i2}, ..., P_{iC_i}PijP_{ij}的含义是第ii个堆型子序列里第jj个元素在原序列里的下标(从11开始)。

Samples

4
4
1 2 3 4
4
2 4 3 1
4
1 1 1 1
5
3 2 1 4 1
1
4 1 2 3 4
2
3 1 2 3
1 4
1
4 1 2 3 4
3
2 1 4
1 2
2 3 5

Note

1n1051{\leq}n{\leq}10^5
所有nn大小的总和不超过2×1062{\times}10^6
1ain1{\leq}a_i{\leq}n

Resources

17暑假前集训-数据结构专题 By AutSky_JadeK - 17浙江省赛 zoj 3963