연속 공격

NYPC 2021 · 본선

에띠가 기획하고 있는 새로운 게임에는 몬스터 농장이라는 시스템이 있다. 이 시스템에서 몬스터들은 여러 마리 있을 수 있으며, 좌우 방향 일렬로 배치되어 있다.

이 게임의 유저는 다음의 두 스킬 중 하나로 몬스터 농장에 있는 몬스터의 구성을 바꿀 수 있다.

단, 몬스터의 레벨이 증가한다는 의미는, 오른쪽에 있는 몬스터의 레벨이 왼쪽에 있는 몬스터의 레벨보다 크다는 의미이다. 몬스터를 한 마리만 선택한 경우도 몬스터의 레벨이 증가한다고 생각한다.

예를 들어, K=10K = 10이고 M=3M = 3이며, 현재 몬스터의 레벨이 왼쪽부터 3,1,4,1,5,93, 1, 4, 1, 5, 9라고 하자. 여기서 연속 소환을 사용해서, 11 번째 몬스터 뒤에 레벨이 각 2,7,8,92, 7, 8, 9인 몬스터를 연속 소환하면 농장에 있는 몬스터의 레벨 구성은 왼쪽부터 3,2,7,8,9,1,4,1,5,93, 2, 7, 8, 9, 1, 4, 1, 5, 9가 된다. 여기서 연속 공격을 사용하여 88 번째부터 1010 번째까지의 몬스터를 제거하면 농장에 있는 몬스터의 레벨 구성은 왼쪽부터 3,2,7,8,9,1,43, 2, 7, 8, 9, 1, 4가 된다.

현재 몬스터 농장에는 몬스터가 AA 마리가 있으며, 왼쪽에서 ii 번째 몬스터의 레벨은 SiS_i 이다. 에띠는 몬스터 농장의 구성을 몬스터가 BB 마리가 되고, 왼쪽에서 ii 번째 몬스터의 레벨이 TiT_i가 되도록 하고 싶다.

에띠가 연속 공격과 연속 소환을 원하는 순서로 원하는 만큼 사용하여 몬스터의 구성을 원하는 대로 만들 수 있는지와, 바꿀 수 있다면 스킬을 사용하는 방법을 구하여라.

입력 형식

첫 줄에 몬스터의 레벨 제한을 나타내는 정수 KK와 스킬의 제한을 나타내는 정수 MM이 공백으로 구분되어 주어진다. (1K,M50)(1 \le K, M \le 50)

두 번째 줄에 현재 몬스터 농장을 구성하는 몬스터 수를 나타내는 정수 AA가 주어진다. (1A50)(1 \le A \le 50)

세 번째 줄에 현재 몬스터 농장 구성의 몬스터의 레벨을 나타내는 정수 AA 개가 공백으로 구분되어 주어진다. 왼쪽에서부터 차례로 S1,,SAS_1, \cdots, S_A를 의미한다. (1SiK)(1 \le S_i \le K)

네 번째 줄에 만들고 싶은 몬스터 농장 구성의 몬스터 수를 나타내는 정수 BB가 주어진다. (1B50)(1 \le B \le 50)

다섯 번째 줄에 만들고 싶은 몬스터 농장 구성의 몬스터의 레벨을 나타내는 정수 BB 개가 공백으로 구분되어 주어진다. 왼쪽에서부터 차례로 T1,,TBT_1, \cdots, T_B를 의미한다. (1TiK)(1 \le T_i \le K)

출력 형식

첫 줄에 몬스터 농장의 몬스터 구성을 원하는 대로 만들 수 있다면 YES를, 아니면 NO를 출력하라.

몬스터 농장의 구성을 원하는 대로 바꿀 수 있다면, 두 번째 줄에 사용해야 하는 스킬의 개수 CC를 출력한다. (0C10000)(0 \le C \le 10\, 000)

그다음 줄부터 사용하는 스킬 CC 개를 다음과 같은 방법으로 차례로 출력하여라.

만약 답이 여러 가지라면, 그중 아무거나 하나 출력한다. 또한, 연산의 횟수를 최소화할 필요가 없음을 유의하여라.

몬스터 농장의 구성을 에띠가 원하는 대로 만들 수 있다면, 스킬을 1000010\, 000번 이내로 사용하는 답이 존재함을 증명할 수 있다.

예제

입력

10 3 6 3 1 4 1 5 9 7 3 2 7 8 9 1 4

출력

YES
2
+ 1 4
2 7 8 9
- 7 3

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 15

2MK2M \le K

종류 2: 13

M,K,A,B6M, K, A, B \le 6

종류 3: 9

M,K,A,B10M, K, A, B \le 10

종류 4: 26

M,K,A,B30M, K, A, B \le 30

종류 5: 37

추가적인 제한 조건이 없음.

해설