بعد التدرب على مهارات لعبة فيلومينو (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$. وإلا، فهذا يعني أنه قد مُلئ الرقم $a_i$ في الخلية رقم $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