Po przećwiczeniu umiejętności w Fillomino, Little Cyan Fish postanawia potrenować więcej w grze „The Artisan of Glimmith”.
Najpierw Little Cyan Fish przedstawia ci zasady Fillomino:
Dla prostokąta o $m$ wierszach i $n$ kolumnach podziel siatkę na kilka obszarów (komórki każdego obszaru muszą być połączone ortogonalnie) tak, aby dowolne dwa sąsiadujące obszary miały różne pola powierzchni. Niektóre komórki w siatce mają już wpisane liczby. Liczba ta oznacza pole powierzchni obszaru, do którego należy dana komórka.
Przykład łamigłówki Fillomino. Źródło: Puzzle GP 2022 R4
Teraz Little Cyan Fish daje ci planszę Fillomino i chce skonstruować dowolne poprawne rozwiązanie tej łamigłówki Fillomino.
Oczywiście ten problem jest zbyt trudny dla Little Cyan Fish, więc musisz rozwiązać tylko przypadek, w którym $m = 1$. Innymi słowy, mając dany wiersz złożony z $n$ komórek, chcesz podzielić te komórki na kilka odcinków (każdy odcinek zawiera w całości pewną liczbę kolejnych komórek), wymagając, aby:
- Dowolne dwa sąsiadujące odcinki miały różne długości;
- Niektóre komórki zawierały pewne liczby, a liczby te oznaczały liczbę komórek w odcinku, do którego należy dana komórka.
Little Cyan Fish prosi cię o ustalenie, czy istnieje poprawne rozwiązanie dla tej planszy. Jeśli istnieje, musisz również wypisać dowolne poprawne rozwiązanie.
Wejście
Wejście składa się z wielu przypadków testowych. Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą $T$ ($1 \le T$), oznaczającą liczbę przypadków testowych.
Dla każdego przypadku testowego pierwszy wiersz wejścia zawiera liczbę całkowitą $n$ ($1 \le n \le 10^6$).
Kolejny wiersz zawiera $n$ liczb całkowitych $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Jeśli $a_i = 0$, oznacza to, że w $i$-tej komórce nie wpisano żadnej liczby. W przeciwnym razie oznacza to, że w $i$-tej komórce wpisano liczbę $a_i$.
Gwarantuje się, że suma $n$ po wszystkich przypadkach testowych nie przekracza $10^6$.
Wyjście
Dla każdego przypadku testowego, jeśli nie istnieje żaden poprawny sposób wypełnienia liczb, wypisz pojedynczy wiersz „No”.
W przeciwnym razie pierwszy wiersz wyjścia powinien zawierać napis „Yes”. Kolejny wiersz powinien zawierać $n$ liczb całkowitych, oznaczających długość odcinka, w którym znajduje się każda komórka w skonstruowanym przez ciebie rozwiązaniu. Jeśli istnieje wiele rozwiązań spełniających wymagania, możesz wypisać dowolne z nich.
Przykład
Wejście 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
Wyjście 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