연속 공격

NYPC 2021 · 본선

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

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

  • 연속 공격 (-): 연속된 구간에 있는 몬스터를 고른다. 구간에는 몬스터가 MM 마리 이상 있어야 하며, 몬스터의 레벨은 구간에서 증가해야 한다. 해당 몬스터를 전부 없앤다.
  • 연속 소환 (+): 각 몬스터의 레벨이 11 이상 KK 이하인 정수이고, 레벨이 증가하도록 연속된 구간에 추가한다. 소환하는 몬스터는 MM 마리 이상이어야 한다.

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

예를 들어, 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 개를 다음과 같은 방법으로 차례로 출력하여라.

  • 연속 공격: 연산을 한 줄에 출력한다.
    • 한 줄에 -, 스킬을 사용할 위치 ii, 없앨 몬스터 수 LL을 공백으로 구분하여 출력한다.
    • 해당 연산은 왼쪽에서부터 i+1,i+2,,i+Li+1, i+2, \cdots, i+L 번째 몬스터를 없앤다는 의미이다.
  • 연속 소환: 연산을 두 줄에 걸쳐 출력한다.
    • 첫 줄에 +, 스킬을 사용할 위치 ii, 추가할 몬스터 수 LL을 공백으로 구분하여 출력한다.
    • 두 번째 줄에는 추가할 몬스터의 레벨을 왼쪽에서부터 차례로, 공백으로 구분하여 출력한다.
    • 해당 연산은 왼쪽에서 ii 번째 몬스터 뒤에 (i=0i=0이라면 가장 앞에) LL 마리의 몬스터를 차례로 추가한다는 의미이다.

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

몬스터 농장의 구성을 에띠가 원하는 대로 만들 수 있다면, 스킬을 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점

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

해설