당신은 웅장하고 진화하는 교향곡을 지휘하고 있습니다. 앙상블은 각 연주자가 특정 고조파 주파수(음이 아닌 정수로 표현됨)를 연주하는 연주자들로 구성됩니다. 초기에는 무대가 완전히 비어 있습니다. $n$개의 순차적인 단계를 거쳐 배열을 변경하는 정확히 하나의 동작이 수행됩니다. 각 단계 $i = 1, 2, \dots, n$에 대해 다음 연산이 수행됩니다:
- 동작이
+(입장)인 경우: 새로운 연주자가 앙상블에 합류합니다. 당신은 그들이 연주할 정확한 주파수 $b_i$를 결정해야 합니다. - 동작이
-(퇴장)인 경우: 무대에서 연주자가 떠납니다. 현재 연주 중인 연주자의 주파수 $b_i$를 선택하고 그 중 정확히 한 명이 연주를 중단하도록 해야 합니다.
매 단계마다 공연은 "팬텀 노트(Phantom Note)"에 의해 고정됩니다. 교향곡의 독특한 음향 특성 때문에 팬텀 노트는 실제로 무대 위의 누구도 연주하지 않습니다. 대신, 그 음높이는 항상 현재 공연에서 빠져 있는 가장 낮은 주파수에 의해 결정됩니다. 팬텀 노트의 음높이는 수학적으로 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$로 변화하도록 만듭니다.