F. Минимальные отрезки
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У вас была последовательность $$$a_1, a_2, \ldots, a_n$$$, состоящая из целых чисел от $$$1$$$ до $$$n$$$, не обязательно различных. По неизвестной причине вы решили посчитать следующую характеристику последовательности:

  • Пусть $$$r_i$$$ ($$$1 \le i \le n$$$) равно наименьшему $$$j \ge i$$$, такому, что на подотрезке $$$a_i, a_{i+1}, \ldots, a_j$$$ встречаются все различные числа из последовательности $$$a$$$. Более формально, для любого $$$k \in [1, n]$$$ существует $$$l \in [i, j]$$$, такое, что $$$a_k = a_l$$$. Если такого $$$j$$$ не существует, $$$r_i$$$ полагается равным $$$n+1$$$.
  • Характеристикой последовательности $$$a$$$ назовем последовательность $$$r_1, r_2, \ldots, r_n$$$.
К сожалению, последовательность $$$a$$$ потерялась, но у вас осталась её характеристика $$$r$$$. Вы хотите восстановить любую последовательность $$$a$$$, подходящую под характеристику, или определить, что в характеристику закралась ошибка, и такой последовательности не существует.
Входные данные

Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — длина потерянной последовательности $$$a$$$.

Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$r_1, r_2, \ldots, r_n$$$ ($$$i \le r_i \le n+1$$$) — характеристика потерянной последовательности $$$a$$$.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2 \cdot 10^5$$$.

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

Для каждого набора входных данных выведите следующее:

  • Если не существует последовательности $$$a$$$ с характеристикой $$$r$$$, то выведите «No».
  • Иначе, в первой строке выведите «Yes», а во второй строке выведите любую последовательность целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le n$$$), подходящую под характеристику $$$r$$$.
Вы можете выводить «Yes» и «No» в любом регистре (например, строки «yEs», «yes», «Yes» и «YES» будут распознаны как положительный ответ).
Пример
Входные данные
5
3
2 3 4
5
2 3 5 4 6
1
1
3
1 3 4
8
3 6 6 6 8 9 9 9
Выходные данные
Yes
1 2 1
No
Yes
1 
No
Yes
1 3 5 3 5 1 1 3
Примечание

В первом наборе входных данных подходит последовательность $$$a = [1, 2, 1]$$$. На подотрезках $$$[1, 2]$$$ и $$$[2, 3]$$$ встречаются числа $$$1$$$ и $$$2$$$.

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