Потренувавшись у розв'язанні філломіно (Fillomino), Little Cyan Fish вирішує продовжити тренування у грі «The Artisan of Glimmith».
Спочатку Little Cyan Fish знайомить вас із правилами філломіно:
Прямокутну сітку з $m$ рядків і $n$ стовпців потрібно розбити на декілька областей (клітинки кожної області повинні бути ортогонально зв'язними) так, щоб будь-які дві сусідні області мали різну площу. У деяких клітинках сітки вже записані числа. Число вказує площу області, до якої належить ця клітинка.
Приклад головоломки філломіно. Джерело: Puzzle GP 2022 R4
Тепер Little Cyan Fish дає вам поле філломіно і хоче побудувати будь-який коректний розв'язок для цієї головоломки.
Звісно, ця задача занадто складна для Little Cyan Fish, тому вам потрібно розв'язати лише випадок $m = 1$. Іншими словами, дано рядок із $n$ клітинок, і ви хочете розбити ці клітинки на декілька відрізків (кожен відрізок повністю складається з декількох послідовних клітинок), вимагаючи, щоб:
- Будь-які два сусідні відрізки мали різну довжину;
- Деякі клітинки містили числа, і ці числа вказували кількість клітинок у відрізку, до якого належить ця клітинка.
Little Cyan Fish просить вас визначити, чи існує коректний розв'язок для цього поля. Якщо він існує, вам також потрібно вивести будь-який коректний розв'язок.
Вхідні дані
Є декілька наборів тестових даних. Перший рядок вхідних даних містить одне ціле число $T$ ($1 \le T$), що вказує на кількість наборів тестових даних.
Для кожного набору тестових даних перший рядок вхідних даних містить ціле число $n$ ($1 \le n \le 10^6$).
Наступний рядок містить $n$ цілих чисел $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Якщо $a_i = 0$, це означає, що в $i$-й клітинці не записано жодного числа. Інакше це означає, що в $i$-й клітинці записано число $a_i$.
Гарантується, що сума $n$ за всіма наборами тестових даних не перевищує $10^6$.
Вихідні дані
Для кожного набору тестових даних, якщо не існує жодної коректної схеми заповнення чисел, виведіть один рядок «No».
Інакше перший рядок вихідних даних має містити рядок «Yes». У наступному рядку виведіть $n$ цілих чисел, що представляють довжину відрізка, у якому розташована кожна клітинка в побудованій вами схемі. Якщо існує декілька схем, що задовольняють вимоги, ви можете вивести будь-яку з них.
Приклад
Вхідні дані 1
7 3 0 0 0 4 2 0 0 0 4 0 2 0 0 6 0 3 3 0 3 0 10 2 0 0 3 0 0 4 0 0 1 6 0 0 1 1 0 0 6 1 2 3 4 5 6
Вихідні дані 1
Yes 2 2 1 No Yes 1 2 2 1 No Yes 2 2 3 3 3 4 4 4 4 1 No No