E. Майк и код перестановки
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Майк открыл новый способ кодирования перестановок. Если у него есть перестановка P = [p1, p2, ..., pn], он закодирует ее следующим образом:

Пусть A = [a1, a2, ..., an] — последовательность длины n, которая будет представлять код перестановки. Для каждого i от 1 до n последовательно он будет выбирать наименьшее непомеченное j (1 ≤ j ≤ n) такое, что pi < pj и присвоит в ai число j (другими словами выполнит ai = j) и пометит j. Если такого j не существует, то он присвоит в ai число  - 1 (он выполнит ai =  - 1).

Майк забыл свою изначальную перестановку, но он помнит ее код. Ваша задача проста: найдите любую перестановку такую, что ее код такой же, как и код изначальной перестановки Майка.

Вы можете предположить, что всегда существует хотя бы одна перестановка.

Входные данные

Первая строка содержит единственное целое число n (1 ≤ n ≤ 500 000) — длина перестановки.

Вторая строка содержит n целых чисел, разделенных пробелами, a1, a2, ..., an (1 ≤ ai ≤ n или ai =  - 1) — код перестановки Майка.

Вы можете предположить, что все положительные числа из A различны.

Выходные данные

В первой и единственной строке выведите n чисел p1, p2, ..., pn (1 ≤ pi ≤ n) — перестановка P, которая имеет такой же код, что и данный. Заметьте, что числа в перестановке различны.

Примеры
Входные данные
6
2 -1 1 5 -1 4
Выходные данные
2 6 1 4 5 3
Входные данные
8
2 -1 4 -1 6 -1 8 -1
Выходные данные
1 8 2 7 3 6 4 5
Примечание

Для перестановки из первого примера:

i = 1, наименьшее j равно 2, потому что p2 = 6 > p1 = 2.

i = 2, нет такого j, потому что p2 = 6 наибольший элемент в перестановке.

i = 3, наименьшее j равно 1 потому что p1 = 2 > p3 = 1.

i = 4, наименьшее j равно 5 (2 уже помечено), потому что p5 = 5 > p4 = 4.

i = 5, нет такого j, потому что 2 уже помечено.

i = 6, наименьшее j равно 4, потому что p4 = 4 > p6 = 3.