Codeforces Round 410 (Div. 2)
E
Mike and code of a permutation
Codeforces
3000
原题
← D→
翻译中…

Mike has discovered a new way to encode permutations. If he has a permutation $*P* = [*p*_{1}, *p*_{2}, ..., *p*_{*n*}]$, he will encode it in the following way:

翻译中…

Denote by $*A* = [*a*_{1}, *a*_{2}, ..., *a*_{*n*}]$ a sequence of length $*n*$ which will represent the code of the permutation. For each $*i*$ from $1$ to $*n*$ sequentially, he will choose the smallest unmarked $*j*$ ($1 ≤ *j* ≤ *n*$) such that $*p*_{*i*} < *p*_{*j*}$ and will assign to $*a*_{*i*}$ the number $*j*$ (in other words he performs $*a*_{*i*} = *j*$) and will mark $*j*$. If there is no such $*j*$, he'll assign to $*a*_{*i*}$ the number $- 1$ (he performs $*a*_{*i*} =  - 1$).

翻译中…

Mike forgot his original permutation but he remembers its code. Your task is simple: find any permutation such that its code is the same as the code of Mike's original permutation.

翻译中…

You may assume that there will always be at least one valid permutation.

翻译中…

Input

翻译中…

The first line contains single integer $*n*$ ($1 ≤ *n* ≤ 500 000$) — length of permutation.

翻译中…

The second line contains $*n*$ space-separated integers $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$ ($1 ≤ *a*_{*i*} ≤ *n*$ or $*a*_{*i*} =  - 1$) — the code of Mike's permutation.

翻译中…

You may assume that all positive values from $*A*$ are different.

翻译中…

Output

翻译中…

In first and only line print $*n*$ numbers $*p*_{1}, *p*_{2}, ..., *p*_{*n*}$ ($1 ≤ *p*_{*i*} ≤ *n*$) — a permutation $*P*$ which has the same code as the given one. Note that numbers in permutation are distinct.

翻译中…

Note

翻译中…

For the permutation from the first example:

翻译中…

$*i* = 1$, the smallest $*j*$ is $2$ because $*p*_{2} = 6 > *p*_{1} = 2$.

翻译中…

$*i* = 2$, there is no $*j*$ because $*p*_{2} = 6$ is the greatest element in the permutation.

翻译中…

$*i* = 3$, the smallest $*j*$ is $1$ because $*p*_{1} = 2 > *p*_{3} = 1$.

翻译中…

$*i* = 4$, the smallest $*j*$ is $5$ ($2$ was already marked) because $*p*_{5} = 5 > *p*_{4} = 4$.

翻译中…

$*i* = 5$, there is no $*j*$ because $2$ is already marked.

翻译中…

$*i* = 6$, the smallest $*j*$ is $4$ because $*p*_{4} = 4 > *p*_{6} = 3$.

翻译中…

样例

Input #1
6
2 -1 1 5 -1 4
Output #1
2 6 1 4 5 3
InputCopy OutputCopy
Input #2
8
2 -1 4 -1 6 -1 8 -1
Output #2
1 8 2 7 3 6 4 5
InputCopy OutputCopy
题目信息
题号
798E
时间限制
4 s
内存限制
512 MB
标签
构造
数据结构
图论
排序

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。