在捷克理工大学的建筑深处,有一些用于检测各种材料力学和电学性能的实验室。在昨天的某次展示中,你已经看到了其中一个实验室是如何被改造成新的多媒体实验室的。但还有其他实验室仍在履行它们最初的职责。
在这个任务中,你需要为这样一个实验室中负责处理样品的机器人编写软件。想象一下,有一些材料样品在传送带上排成一列。这些样品的高度各不相同,这可能会给下一个处理单元带来麻烦。为了消除这些麻烦,我们需要按高度将样品升序排序。
重新排列是由一个机械手完成的,它能够拿起任意数量的连续样品并将其翻转,从而使它们的相对顺序颠倒。换句话说,一次机器人操作可以反转位置 $A$ 和 $B$ 之间的样品顺序。
一种可行的排序方法是:找到最小样品的位置($P_1$),并反转位置 $1$ 到 $P_1$ 之间的顺序,这使得最小的样品排在第一位。然后我们找到第二小的样品,它在位置 $P_2$,并反转位置 $2$ 到 $P_2$ 之间的顺序。接着定位第三个样品,依此类推。
上图展示了一个包含 6 个样品的简单例子。最小的样品在第 4 个位置,因此机械手反转前 4 个样品。第二小的样品在最后一个位置,所以下一次机器人操作将反转位置 2–6 上的五个样品。第三步将反转样品 3–4,依此类推。
你的任务是找到能够使用上述算法对样品进行排序的正确反转操作序列。如果有多个高度相同的样品,必须保持它们原有的相对顺序:在初始顺序中先出现的样品,在最终的排序结果中也必须排在其他相同高度的样品之前。
输入格式
输入包含多个测试用例。每个测试用例由两行描述。
第一行包含一个整数 $N$,表示样品的数量,$1 \le N \le 100\,000$。
第二行包含恰好 $N$ 个空格分隔的正整数,指定每个样品的高度以及它们的初始顺序。
最后一个测试用例后面紧跟一行,包含一个数字 0。
输出格式
对于每个测试用例,输出一行,包含恰好 $N$ 个由空格分隔的整数 $P_1, P_2, \dots, P_N$。每个 $P_i$ 必须是一个整数($1 \le P_i \le N$),表示在进行第 $i$ 次反转操作之前,第 $i$ 小的样品所在的位置。
注意,如果一个样品已经处于其正确的位置 $P_i$(即 $P_i = i$),你仍然应该输出数字 $P_i$,表示“$P_i$ 到 $P_i$ 之间的区间”(即单个样品)被反转。
样例
输入样例 1
6 3 4 5 1 6 2 4 3 3 2 1 0
输出样例 1
4 6 4 5 6 6 4 2 4 4