给定一个 1 \sim n 的排列 p,构建其笛卡尔树。
即构建一棵二叉树,满足:
每个节点的编号满足二叉搜索树的性质。
节点 i 的权值为 p_i,每个节点的权值满足小根堆的性质。
请编程输出构建笛卡尔树之后每个结点编号,以及每个结点的左右孩子的编号。
第一行一个整数 n。
第二行一个排列 p_1 \dots p_n。
设 l_i,r_i 分别表示节点 i 的左右儿子的编号(若不存在则为 0)。
输出 N 行,按照读入结点 p_1,\dots,p_n 的顺序,输出每个结点编号、结点的权值 p_i 、左孩子编号 l_i、右孩子编号 r_i。
5 3 1 4 5 2
1 3 0 0 2 1 1 5 3 4 0 4 4 5 0 0 5 2 3 0
对于 30\% 的数据,n \le 10^3。
对于 90\% 的数据,n \le 10^5。
对于 100\% 的数据,1 \le n \le 10^6。