#P10376. 排列

排列

题目背景

小 L 喜欢排列,他平日里喜欢研究排列的各种性质。

这天,小 L 在研究排列中的单调子序列时,遇到了一个问题。

题目描述

定义 f(n) f(n) 为最小的正整数 k k 使得长度为 n n 的所有排列都可以划分为 k k 个单调子序列且排列中每个数都恰好属于一个子序列。小 L 现在有一个长度为 n n 的排列 p p ,他想让你把它划分为 k k 个单调子序列,使得 kf(n) k \leq f(n)

单调子序列定义为原序列的上升子序列或下降子序列。

输入格式

第一行一个正整数 n n

接下来一行 n n 个正整数,表示排列 p p

输出格式

第一行一个正整数 k k ,表示你划分的单调子序列个数。注意:你并不需要最小化单调子序列个数,只需保证 kf(n) k \leq f(n)

接下来 k k 行,每行第一个数为 li l_i ,表示你划分出的该子序列的长度,随后有 li l_i 个正整数,第 j j 个数为 ai,j a_{i,j} ,描述该子序列。

样例1输入

4
4 3 1 2

样例1输出

2
3 4 3 1
1 2

样例2输入

6
4 5 6 1 3 2

样例2输出

3
2 4 1
2 5 6
2 3 2

样例3输入

10
1 2 3 4 5 6 7 8 9 10

样例3输出

1
10 1 2 3 4 5 6 7 8 9 10

数据范围和提示

子任务编号 n n \leq 特殊性质 子任务依赖 分值
1 6 6 16
2 2000 2000 1 22
3 105 10^5 pi=i p_i=i pi=ni+1 p_i=n-i+1 2
4 保证排列 LIS 长度 f(n) \leq f(n) 13
5 2,3,4 47

对于所有的数据,有 1n105,1pin 1 \leq n \leq 10^5 ,1 \leq p_i \leq n ,保证 p p 是一个 1 1 n n 的排列。