Farmer John 的农场上有N(1<=N<=1000)棵树。在上过计算机课后,Betsy发现所有的树实际上都是严格的二叉树。二叉树的每个非叶结点都恰好有两个子结点。Betsy给每个结点一个数表示以这个结点为根的子树的叶结点数。
然后,Betsy按照先序遍历的结果把和结点相关的数列作为它的特征序列。但是,她只列出了与根结点和所有的左子结点相关的数。例如对下面的树:
*7
/ \
/ \
/ \
*4 3
/ \ / \
*1 3 *1 2
/ \ / \
*2 1 *1 1
/ \
*1 1
用*表示的是Betsy列出的结点。这棵树的特征序列为:(7 4 1 2 1 1 1)。
在用这种方法表示完所有的树后,Betsy发现:
•所有的树有同样多的叶结点,
•所有的树有不同的特征序列,
•所有可能的严格的二叉树都在农场上。
所以,作为一个有创造力的奶牛,她决定把这些特征序列排序。给出一棵树的特征序列,求出紧接着的一个序列。
输入格式
第1行:N,特征序列的长度。
第2行:N个用空格隔开的数,表示一棵树的特征序列。
输出格式
单独的一行,表示按字典排序后所给序列的后一个序列。如果所给序列是最后一个序列,则输出0。记住:输入和输出的序列代表的树要有相同的叶结点数。
样例输入(nextree.in)
5
5 3 2 1 1
样例输出(nextree.out)
5 4 1 1 1
[此贴子已经被作者于2007-4-28 11:22:40编辑过]