时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
【排列】长度为

的
排列是由

这

个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如,

是一个长度为
的排列,而

和

都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
定义一个排列

的前缀

序列为一个长度为

的非负整数数组

,其中
![pre\_mex[i]](https://www.nowcoder.com/equation?tex=pre%5C_mex%5Bi%5D)
表示没有在

内

个元素内出现过的最小非负整数。
定义一个排列
的后缀
序列为一个长度为
的非负整数数组
,其中
表示没有在
内
个元素内出现过的最小非负整数。
给你一个排列

,定义两个排列

相似当且仅当它们的前缀

序列相等且后缀

序列同样相等,请你求出一个排列

满足

是字典序大于

且与

相似的字典序最小的排列。
特别地,当无解时,请你输出 
表示没有这样的排列

。
输入描述:
第一行输入一个整数
代表排列中的元素数量。
第二行输入
个互不相同的整数
代表排列元素。
输出描述:
输出一个长度为

的排列

,表示答案。
特别地,当无解时输出

。