你正在指揮一場宏偉、不斷演變的交響樂。樂團由多位樂手組成,每位樂手演奏一個特定的和聲頻率(以非負整數表示)。一開始,舞台完全空無一人。接下來有 $n$ 個連續的步驟,每次執行動作來改變編制。對於每個步驟 $i = 1, 2, \dots, n$,會執行一個操作:
- 若操作為
+(進場):一位新樂手加入樂團。你必須決定他演奏的頻率 $b_i$。 - 若操作為
-(退場):一位樂手離開舞台。你必須從當前演奏的樂手中選擇一個頻率 $b_i$,並讓恰好一位演奏該頻率的樂手停止演奏。
每一步,演出都由「幻音」主導。由於音樂廳獨特的聲學效果,幻音從未由台上的任何人實際演奏。相反,它的音高始終由當前演出中缺失的最低頻率決定。幻音的音高在數學上定義為 mex(最小排除值)。令 $S$ 為代表樂團當前演奏頻率集合的多重集合。最小排除值,記為 $\operatorname{mex}(S)$,是滿足 $x \notin S$ 的最小非負整數 $x$。
在第 $i$ 個動作之後,要求幻音必須恰好共振為 $a_i$。
你的任務是判斷是否存在一組合法的選擇頻率序列 $b_1, b_2, \dots, b_n$,能夠完美地在每一步實現所需的幻音進程,如果存在,則構造出一組這樣的序列。
輸入格式
本題包含多筆測試資料。輸入的第一行包含一個整數 $t$ ($1 \le t \le 3 \cdot 10^5$),代表測試資料的數量。
對於每筆測試資料,每場演出由三行描述:
- 第一行包含一個整數 $n$ ($1 \le n \le 5000$),代表演出的總步驟數。
- 第二行包含一個長度為 $n$ 的字串 $op$,僅由字元
+和-組成。字元 $op_i$ 表示第 $i$ 個動作的性質:+表示樂手進場,-表示樂手退場。 - 第三行包含 $n$ 個整數 $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$),代表第 $i$ 個動作之後幻音所需達到的精確音高。
保證所有演出中 $n^2$ 的總和不超過 $5000^2$。
輸出格式
對於每場演出,按以下方式輸出結果:
如果無法安排出所需的幻音進程,則輸出一行,包含單詞 NO。
否則,輸出兩行:
- 第一行必須包含單詞
YES; - 第二行必須包含 $n$ 個非負整數 $b_1, b_2, \dots, b_n$,代表每個相應步驟中進場或退場樂手所演奏的具體頻率。
每個頻率 $b_i$ 必須完全滿足題目敘述中描述的聲學約束和操作規則。你可以輸出任何合法的非負整數,前提是它能用標準的有符號 64 位整數表示。
如果存在多組合法的頻率序列滿足該演出,你可以輸出其中任意一組。
範例
輸入 1
4 2 ++ 0 2 3 +++ 0 1 3 3 +-+ 1 0 2 6 ++-+-+ 0 2 0 0 0 1
輸出 1
YES 1 0 YES 2 0 1 NO YES 1 0 0 7 1 0
說明
範例 1 中有四筆測試資料。
- 在第一筆測試資料中,插入 $1$ 使 mex(幻音)保持為 $0$,然後插入 $0$ 使 mex 變為 $2$。
- 在第二筆測試資料中,插入 $2,0,1$ 使 mex 序列為 $0,1,3$。
- 在第三筆測試資料中,第一次操作後 mex 為 $1$ 強制插入 $0$;刪除它之後,再一次插入無法使 mex 變為 $2$,因此答案為
NO。 - 在第四筆測試資料中,輸出的值使多重集合的演變對應的 mex 序列為 $0,2,0,0,0,1$。