가희와 읽기 쓰기 놀이
시간 제한2초메모리 제한512 MB
각 카드에 적힌 연산과 N명의 카드 사용 순서가 주어질 때, 카드 순열마다 나오는 모든 서로 다른 최종 문자열을 ASCII 순서로 출력한다.
문제
가희와 친구들은 읽기 쓰기 놀이를 하고 있습니다. 읽기 쓰기 놀이는 문자열을 가지고 시작합니다.
놀이에서 사용하는 카드에 적혀져 있는 연산은 둘 중 하나입니다.
-
add c
- 문자열 뒤에 문자 c를 추가합니다.
-
del x
- 문자열의 x번째 위치에 있는 글자를 삭제합니다.
- 문자열의 인덱스는 0부터 시작합니다. x번째 위치에 있는 문자를 삭제할 수 없는 경우에는, 오류가 발생합니다.
놀이의 규칙은 다음과 같습니다.
- 빈 문자열로 게임을 시작합니다.
- 각 턴을 수행하는 사람은 1명입니다.
- 턴을 수행하는 사람은 가지고 있는 카드에 적혀져 있는 연산을 모두 수행하고 턴을 종료합니다. 턴을 수행하다가, 오류가 발생하면 문자열은 "ERROR"가 되고, 즉시 게임이 종료됩니다.
- 게임의 끝났을 때, 문자열이 빈 문자열이라면, 문자열은 "EMPTY"가 됩니다.
문자열 게임에 참가하는 사람은 N명이고, 카드는 C장 있습니다.
게임에 참가하는 사람이 어떤 순서대로 카드를 냈는지 알고 있을 때, 게임의 결과로 나올 수 있는 문자열을 사전순으로 출력해 주세요.
입력
1번째 줄에 N, C가 공백으로 구분되어 주어집니다.
2번째 줄 부터 N+1번째 줄까지 1번 사람부터 N번 사람까지 낸 카드의 갯수와 카드를 낸 순서가 주어집니다.
예를 들어 3번째 줄에 3 2 4 5 가 있다면, 2번째 사람이 3개의 카드 2,4,5를 순서대로 낸 것을 의미합니다.
N+2번째 줄부터 N+C+1번째 줄까지 1번 카드부터 C번 카드에 적혀져 있는 1개 이상의 연산이 주어집니다.
연산이 여러 개 있는 경우에 각각의 연산은 ,으로 구분되어 주어집니다.
출력
게임의 결과로 나올 수 있는 문자열을 사전순으로 출력해 주세요. 사전순의 기준은 아스키 코드입니다.
만약에 같은 문자열이 여러 개가 나오면 하나로 출력해야 합니다.
제한
- 1 ≤ N ≤ C ≤ 9
- 1 ≤ 카드 C개에 있는 연산 갯수 합 ≤ 10
- 추가되는 문자는 소문자입니다.
- 0 ≤ 제거 연산에서 등장하는 수 ≤ 9
- 카드에는 하나 이상의 연산이 있습니다.
- 모든 플레이어는 최소 한 장의 카드를 냅니다.
- 모든 카드는 게임에 이용되며, 한 번 사용된 카드는 다시 사용되지 않습니다.