만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

멈추지 마라

시간 제한2초메모리 제한512 MB

요약
s와 켜져 있어야 할 램프 위치가 주어질 때, s 앞에 실행하고 s 뒤에 되돌리는 프로그램 t를 구합니다.
난이도

보통10점 중 7점

유형
시뮬레이션, 문자열, 구현
정답자
아직 제출이 없습니다

문제

정수로 번호가 매겨진 무한히 많은 전구가 직선 위에 놓여 있다. 각 전구는 켜거나 끌 수 있다. 전구 관리인은 처음에 0번 전구의 위치에 있다. 그는 왼쪽 또는 오른쪽으로 한 칸 이동할 수 있고(좌표를 1 줄이거나 늘린다), 현재 위치의 전구를 토글할 수 있다. 이 동작들은 각각 "L", "R", "X"로 나타낸다.

"L", "R", "X"로 이루어진 문자열을 관리인의 프로그램이라고 부른다. 예를 들어 현재 위치가 0이고 "RRXL"을 받으면, 오른쪽으로 두 번 이동하고, 위치 2의 전구를 토글한 뒤, 왼쪽으로 이동해 위치 1에 도착한다.

처음에는 모든 전구가 꺼져 있다. 최종적으로 좌표가 a1a_1, …\ldots, ana_n인 전구만 켜져 있고 나머지는 모두 꺼져 있는 상태를 만들고 싶다. 관리인에게는 실행할 계획인 프로그램 ss가 있고, 그는 계획을 크게 바꾸고 싶어 하지 않는다. 다만 약간의 도움에는 동의했다. 프로그램 tt를 주면, 그는 먼저 tt의 모든 명령을 실행한다. 그다음 원래 계획대로 자기 프로그램 ss를 실행한다. 그 후 tt의 명령을 역순으로 수행하면서 "L"과 "R"을 서로 바꿔 실행해 도움의 효과를 되돌리려 한다.

좌표 aia_i와 관리인의 프로그램 ss가 주어졌을 때, 최종적으로 a1a_1, …\ldots, ana_n의 전구만 켜지고 나머지는 꺼지도록 하는 프로그램 tt를 구하라. 불가능하면 그 사실을 판정하라.

입력

첫째 줄에 문자열 ss (1≤∣s∣≤2⋅1051 \leq |s| \leq 2 \cdot 10^5)가 주어진다. 문자열은 "L", "R", "X"로 이루어지며, 관리인의 초기 프로그램이다.

둘째 줄에는 최종적으로 켜져 있어야 하는 전구의 개수 nn (0≤n≤2⋅1050 \leq n \leq 2 \cdot 10^5)이 주어진다. 셋째 줄에는 전구의 좌표 nn개가 공백으로 구분되어 주어진다. 주어지는 좌표는 모두 서로 다르며, 절댓값은 2⋅1052 \cdot 10^5을 넘지 않는다.

출력

목표를 달성할 수 있는 문자열 tt를 출력하라. 답이 여러 개이면 그중 아무것이나 출력해도 된다. 답은 빈 문자열일 수도 있다. 답의 길이는 2⋅1062 \cdot 10^6자를 넘을 수 없다.

목표를 달성할 수 없으면 "NO"(따옴표 제외) 한 단어만 출력하라.

설명

예시에서 관리인의 문자열은 "RXR"이고, 원하는 전구의 위치는 −2-2, 00, 22이다. 관리인에게 문자열 "XLLXR"을 줄 수 있다. 그러면 합쳐진 프로그램은 "XLLXR-RXR-LXRRX"가 된다(보기 쉽게 하이픈을 넣었다).

관리인은 먼저 0번 전구를 켠다. 그다음 −2-2로 이동해 그 전구를 켜고, 0으로 돌아와 전구를 끈 뒤 다시 켠다. 마지막으로 2로 이동해 그 전구를 켠다. 최종적으로 모든 전구가 원하는 상태가 된다.

예제1

  1. 예제 1

    입력
    RXR
    3
    -2 0 2
    
    예상 출력
    XLLXR