排队

题目描述

第一届喵喵喵编程大赛即将开始,本次比赛有 $n$ 只喵喵参赛,编号依次为 $1,2,\ldots, n$,已经分成了若干组,每一组喵喵的编号都是连续的一段。 根据报名情况,你已经知道第 $i$ 只喵喵会第 $p_i$ 个到达现场,保证 $p_i$ 构成 $1\sim n$ 的排列。 一组喵喵的到达时间被定义为这一组喵喵中**最早到达**的喵喵的到达时间。 喵喵的排队规则如下: - 先把所有的喵喵组按每组喵喵的到达时间从小到大排序。 - 然后对于同一组喵喵,按照每只喵喵的到达时间从小到大排序。 按照这个排队规则,可以得到一个新的排列 $q_1,\ldots,q_n$,其中 $q_i$ 表示从前往后第 $i$ 只喵喵的**到达时间**。 你已经知道了所有 $p_i$,但是不清楚喵喵的分组,你想知道排列 $q_1,q_2,\ldots,q_n$ 的字典序最大可能是什么。

输入输出格式

输入格式


输入的第一行有一个正整数 $n$,表示喵喵数量。 第二行有 $n$ 个正整数 $p_1,p_2,\ldots,p_n$,表示每只喵喵的到达顺序。

输出格式


输出一行 $n$ 个正整数,表示 $q$ 的字典序最大可能。

输入输出样例

输入样例 #1

4
2 1 4 3

输出样例 #1

1 4 2 3

输入样例 #2

6
6 5 4 3 2 1

输出样例 #2

1 2 3 4 5 6

说明

【样例 1 解释】 所有可能的分组情况有 $8$ 种可能,下面分别列出: |分组情况|最终排列 $q$| |:-:|:-:| |$(2)(1)(4)(3)$|$1,2,3,4$| |$(2)(1)(4,3)$|$1,2,3,4$| |$(2)(1,4)(3)$|$1,4,2,3$| |$(2)(1,4,3)$|$1,3,4,2$| |$(2,1)(4)(3)$|$1,2,3,4$| |$(2,1)(4,3)$|$1,2,3,4$| |$(2,1,4)(3)$|$1,2,4,3$| |$(2,1,4,3)$|$1,2,3,4$| 关于表格,我们以 $(2)(1,4,3)$ 这个分组方式为例,演示排队结果的计算: - 首先 $(2)$ 这组喵喵的到达时间为第 $2$,$(1,4,3)$ 这组喵喵的到达时间为第 $1$,从而 $(1,4,3)$ 排在前面。 - 然后 $(1,4,3)$ 这组喵喵内部按照到达时间排序,得到 $1,3,4$;$(2)$ 这组喵喵内部按照到达时间排序得到 $2$。 - 最后把每组喵喵的排序结果拼起来,得到 $1,3,4,2$。 【样例 2 解释】 读者不难验证,无论喵喵怎么分组,因为无论组内还是组外都是从小到大排序的,所以 $q_i$ 永远是 $1,2,3,4,5,6$。 【数据范围】 对于全体数据,保证 $1\le n\le 3\times 10^5$,且 $p_i$ 构成 $1\sim n$ 的一个排列。 |子任务编号|$n\le$|特殊性质|分值| |:-:|:-:|:-:|:-:| |1|$3$||11| |2|$16$||16| |3|$2000$||22| |4|$3\times 10^5$|A|17| |5|$3\times 10^5$||34| - 特殊性质 A:存在 $1\le k\le n$ 使得 $p_1>p_2>\ldots >p_{k-1}> p_k < p_{k+1}<\ldots < p_n$。例如,样例 2 就是 $k=6$ 的情形。