Setelah melatih keterampilan Fillomino, Little Cyan Fish memutuskan untuk berlatih lebih banyak pada permainan "The Artisan of Glimmith".
Little Cyan Fish pertama-tama memperkenalkan aturan Fillomino kepada Anda:
Untuk sebuah persegi panjang dengan $m$ baris dan $n$ kolom, bagilah kisi menjadi beberapa wilayah (sel-sel dari setiap wilayah harus terhubung secara ortogonal), sedemikian sehingga setiap dua wilayah yang bersebelahan memiliki luas yang berbeda. Beberapa sel dalam kisi sudah diisi dengan angka. Angka tersebut menunjukkan luas wilayah tempat sel itu berada.
Contoh teka-teki Fillomino. Sumber: Puzzle GP 2022 R4
Little Cyan Fish sekarang memberi Anda sebuah papan Fillomino, dan ia ingin mengonstruksi solusi valid apa pun untuk teka-teki Fillomino ini.
Tentu saja, masalah ini terlalu sulit bagi Little Cyan Fish, sehingga Anda hanya perlu menyelesaikan kasus ketika $m = 1$. Dengan kata lain, diberikan satu baris yang terdiri dari $n$ sel, Anda ingin membagi sel-sel ini menjadi beberapa segmen (setiap segmen sepenuhnya berisi beberapa sel berurutan), dengan syarat:
- Setiap dua segmen yang bersebelahan memiliki panjang yang berbeda;
- Beberapa sel berisi angka, dan angka-angka ini menunjukkan banyaknya sel pada segmen tempat sel tersebut berada.
Little Cyan Fish meminta Anda untuk menentukan apakah terdapat solusi yang valid untuk papan tersebut. Jika ada, Anda juga perlu mengeluarkan solusi valid apa pun.
Masukan
Terdapat beberapa kasus uji. Baris pertama dari masukan berisi sebuah bilangan bulat tunggal $T$ ($1 \le T$), yang menyatakan banyaknya kasus uji.
Untuk setiap kasus uji, baris pertama dari masukan berisi sebuah bilangan bulat $n$ ($1 \le n \le 10^6$).
Baris berikutnya berisi $n$ bilangan bulat $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Jika $a_i = 0$, itu berarti tidak ada angka yang diisikan pada sel ke-$i$. Jika tidak, itu berarti $a_i$ diisikan pada sel ke-$i$.
Dijamin bahwa jumlah $n$ di semua kasus uji tidak melebihi $10^6$.
Keluaran
Untuk setiap kasus uji, jika tidak terdapat skema pengisian angka yang valid, maka keluarkan satu baris "No".
Jika tidak, baris pertama dari keluaran berisi string "Yes". Baris berikutnya mengeluarkan $n$ bilangan bulat, yang menyatakan panjang segmen tempat masing-masing sel berada dalam skema yang Anda konstruksi. Jika terdapat beberapa skema yang memenuhi persyaratan, Anda dapat mengeluarkan yang mana saja.
Contoh
Masukan 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
Keluaran 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