给你一个由 $n$ 个整数组成的多重集 $S$。你需要重复执行以下三步操作若干次,直到 $S$ 中只剩下一个整数。
- 选择一个多重集 $T$,满足 $T$ 是 $S$ 的子多重集且 $|T| \ge 2$。
- 从 $S$ 中擦除 $T$ 中的元素。
- 将值 $\max(T) - \min(T)$ 插入到 $S$ 中。
找到一个操作序列,使得最终留在 $S$ 中的整数最大。
输入格式
第一行包含一个整数 $n$ ($2 \le n \le 10^5$)。
第二行包含 $n$ 个整数 $S_1, S_2, \ldots, S_n$ ($0 \le S_i \le 10^5$)。
输出格式
第一行输出一个整数 $k$,表示操作次数 ($1 \le k \le n - 1$)。
接下来的 $k$ 行中,每行输出一个整数 $m$(表示所选多重集 $T$ 的大小),后跟 $m$ 个整数 $T_1, T_2, \ldots, T_m$(表示该多重集本身,顺序任意)($2 \le m \le n$)。
请注意,操作是按照列出的顺序执行的。因此,对于每次操作,在执行完所有先前的操作后,$T$ 必须是此时 $S$ 的子多重集。
样例
输入样例 1
7 33 24 63 48 97 90 93
输出样例 1
4 3 33 93 90 2 63 60 2 48 24 3 97 24 3
说明
在样例中,我们可以执行以下操作:
| 所选 $T$ | 新 $S$ | |
|---|---|---|
| $0$ | $\{24, 33, 48, 63, 90, 93, 97\}$ | |
| $1$ | $\{33, 90, 93\}$ | $\{24, 48, 60, 63, 97\}$ |
| $2$ | $\{60, 63\}$ | $\{3, 24, 48, 97\}$ |
| $3$ | $\{24, 48\}$ | $\{3, 24, 97\}$ |
| $4$ | $\{3, 24, 97\}$ | $\{94\}$ |
$S$ 中带有下划线的值表示新插入的整数。在第四次操作后,$S$ 减少为单个整数值 $94$。可以证明,没有其他操作序列可以得到更大的值。