在构造题和杂题的时代,还有什么比把两个查询问题合二为一更亵渎的呢?
KOI 市由 $N$ 个路口和 $N - 1$ 条双向道路组成。你只能通过给定的道路在两个不同的路口之间通行。换句话说,该市的道路网络构成了一棵树。道路位于二维平面上,且除端点外,任意两条道路互不相交。每条道路都有一个非负整数权重,代表通过该道路所需的时间。
直到几十年前,KOI 市还是一个小镇,但随着人口的涌入,它开始迅速扩张。在快速扩张的过程中,为了行政方便,市长将路口编号为 $1$ 到 $N$。该编号系统满足以下性质:
- 路口 $1$ 是城市的中心,且至少连接 $2$ 条道路。
- 分配给路口的编号构成了以路口 $1$ 为根的树的一种先序遍历:对于任何子树,其根节点的编号是该子树中最小的编号。
- 对于每个路口,考虑所有相邻(直接通过道路连接)路口中编号最小的一个。当你从该路口开始,按逆时针顺序排列所有相邻路口时,编号是递增的。
随着大量人口涌入 KOI 市,交通拥堵问题日益严重。为了解决这个问题,市长用外环路连接了最外围的城市。设 $\{v_1, v_2, \dots, v_k\}$ 为所有仅连接一条道路的路口的编号,按递增顺序排列。对于每个 $1 \le i \le k$,市长在路口 $v_i$ 和路口 $v_{(i \mod k)+1}$ 之间修建了一条双向道路。每条道路的权重为非负整数 $w_i$。由于编号系统的特性,你可以观察到,外环路可以在二维平面上添加,使得任意两条道路除端点外在任何位置都不相交。
然而,解决交通拥堵只会缩短通勤时间,使资本家更容易剥削工人。工人们不会上资本家恶心的当——他们想回到过去,那时他们可以在 KOI 市应用重链剖分和质心分解!工人们成功发动了社会主义革命,推翻了资本主义政权。现在,他们想通过创建一棵满足以下条件的新树来重建现有的 KOI 市结构:
- 设 $K$ 为新树中顶点的数量;需满足 $K \le 4N$。从现在起,我们将新树的顶点标记为 $1, 2, \dots, K$。
- 对于新树的每个顶点 $i$,都有一个对应的集合 $X_i$,它是 $\{1, 2, \dots, N\}$ 的子集。
- 对于 KOI 市中的所有道路(包括树边和外环路边)$(u, v)$,存在一个集合 $X_i$ 使得 $\{u, v\} \subseteq X_i$。
- 对于所有 $1 \le j \le N$,设 $S_j$ 为满足 $j \in X_i$ 的顶点 $1 \le i \le K$ 的集合。则 $S_j$ 必须非空,且必须是新树上的一个“革命集”。
- 对于所有 $1 \le i \le K$,满足 $|X_i| \le 4$。
对于一棵树 $T$ 和一个作为 $T$ 顶点子集的集合 $S$,如果对于所有顶点 $u, v \in S$,它们在 $S$ 下连通,则称集合 $S$ 在 $T$ 上是革命性的。如果存在一条仅经过 $S$ 中顶点的 $T$ 中的路径,则称两个顶点 $(u, v)$ 在 $S$ 下连通。
例如,考虑下图所示的树和集合 $S = \{1, 2, 3, 4, 5, 6\}$。
在这种情况下,$(1, 2)$、$(3, 5)$ 和 $(4, 6)$ 在 $S$ 下连通,而 $(1, 6)$ 和 $(2, 7)$ 在 $S$ 下不连通。
输入格式
第一行包含 KOI 市的路口数量 $N$ ($4 \le N \le 100\,000$)。 接下来的 $N - 1$ 行,每行包含一个整数 $p_i$。这表示存在一条连接路口 $p_i$ 和路口 $i + 1$ 的双向道路 ($1 \le p_i \le i$)。注意,这些不是外环路。
输出格式
第一行输出新树的顶点数量 $K$。你的答案需满足 $1 \le K \le 4N$。 然后输出 $K$ 行。在第 $i$ 行,输出 $|X_i| + 1$ 个空格分隔的整数。第一个整数应为集合 $X_i$ 的大小。接下来的 $|X_i|$ 个整数应为 $X_i$ 中的元素,顺序不限。 在接下来的 $K - 1$ 行中,每行输出两个空格分隔的整数 $a$ 和 $b$,表示新树中存在一条连接 $a$ 和 $b$ 的边。
可以证明答案总是存在的。
样例
输入格式 1
4 1 1 1
输出格式 1
1 4 1 2 3 4