Universal Cup Judging System

Universal Cup

시간 제한: 1.0 s 메모리 제한: 1024 MB 총점: 100 난이도: [표시] 해킹 가능 ✓
통계

Dopo essersi esercitato nelle abilità di Fillomino, Little Cyan Fish decide di allenarsi ancora di più nel gioco «The Artisan of Glimmith».

Per prima cosa, Little Cyan Fish ti presenta le regole di Fillomino:

Per un rettangolo di $m$ righe e $n$ colonne, dividi la griglia in diverse regioni (le celle di ciascuna regione devono essere connesse ortogonalmente), in modo che due regioni adiacenti qualsiasi abbiano aree diverse. Alcune celle della griglia hanno già dei numeri inseriti. Il numero indica l'area della regione a cui appartiene.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Un esempio di rompicapo Fillomino. Fonte: Puzzle GP 2022 R4

Ora Little Cyan Fish ti dà una scacchiera di Fillomino e vuole costruire una qualsiasi soluzione valida per questo rompicapo di Fillomino.

Naturalmente, questo problema è troppo difficile per Little Cyan Fish, quindi devi risolvere solo il caso in cui $m = 1$. In altre parole, data una riga di $n$ celle, vuoi dividere queste celle in diversi segmenti (ogni segmento contiene interamente diverse celle consecutive), richiedendo che:

  • Due segmenti adiacenti qualsiasi abbiano lunghezze diverse;
  • Alcune celle contengono dei numeri, e questi numeri indicano il numero di celle nel segmento a cui appartiene tale cella.

Little Cyan Fish ti chiede di determinare se esiste una soluzione valida per la scacchiera. Se esiste, devi anche stampare una qualsiasi soluzione valida.

Input

Ci sono più casi di test. La prima riga dell'input contiene un singolo intero $T$ ($1 \le T$), che indica il numero di casi di test.

Per ogni caso di test, la prima riga dell'input contiene un intero $n$ ($1 \le n \le 10^6$).

La riga successiva contiene $n$ interi $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Se $a_i = 0$, significa che non è stato inserito alcun numero nella $i$-esima cella. Altrimenti, significa che nella $i$-esima cella è stato inserito $a_i$.

È garantito che la somma di $n$ su tutti i casi di test non supera $10^6$.

Output

Per ogni caso di test, se non esiste alcuno schema valido per inserire i numeri, stampa una singola riga «No».

Altrimenti, la prima riga dell'output contiene la stringa «Yes». La riga successiva stampa $n$ interi, che rappresentano la lunghezza del segmento in cui si trova ciascuna cella nello schema che hai costruito. Se ci sono più schemi che soddisfano i requisiti, puoi stamparne uno qualsiasi.

Esempio

Input 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

Output 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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.