Задача №115169. Минимальные отрезки

У вас была последовательность \(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\).
Вы можете выводить « No » и « Yes » в любом регистре.

Примечание

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

Примеры
Входные данные
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 2 3 2 3 1 1 2 
Сдать: для сдачи задач необходимо войти в систему