시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
Hal은 기호 계산기를 가지고 있습니다. 이 계산기의 메모리는 최대 100개의 원소를 담을 수 있는 리스트입니다. 각 원소에는 하나의 수식이 저장되며, 수식은 기호 A, B, #, $, (, ) 로만 이루어집니다. 리스트의 맨 앞에 있는 원소를 첫 번째(맨 위) 원소, 그다음을 두 번째 원소라고 부릅니다.
계산기는 정확히 두 개의 원소로 시작합니다. 첫 번째 원소에는 A, 두 번째 원소에는 B 가 들어 있습니다.
계산기는 다음 명령들을 이해합니다.
HASH — 첫 번째 원소가 수식 s, 두 번째 원소가 수식 t 를 담고 있으면, 두 원소를 제거하고 (t#s) 를 담은 새 첫 번째 원소를 만듭니다.DOLLAR — 첫 번째 원소가 s, 두 번째 원소가 t 이면, 두 원소를 제거하고 (t$s) 를 담은 새 첫 번째 원소를 만듭니다.SWAP — 첫 번째 원소와 두 번째 원소를 맞바꿉니다.DROP — 첫 번째 원소를 제거합니다.DUP — 현재 첫 번째 원소를 복사한 새 첫 번째 원소를 만듭니다.ROT — 앞의 네 원소를 회전시켜, 첫 번째는 두 번째로, 두 번째는 세 번째로, 세 번째는 네 번째로, 네 번째는 첫 번째가 되도록 합니다.예를 들어 리스트가 A, B (A 가 맨 위)일 때 HASH 는 위쪽 두 원소를 하나의 원소 (B#A) 로 바꿉니다.
명령을 실행할 원소가 부족하거나, 실행 결과 리스트의 길이가 100을 넘게 되면 그 명령은 실패하며(프로그램이 잘못됨) 조건은 다음과 같습니다.
DUP 와 DROP 은 원소가 최소 1개 필요합니다.HASH, DOLLAR, SWAP 은 원소가 최소 2개 필요합니다.ROT 은 원소가 최소 4개 필요합니다.DUP 뿐이며, 리스트에 이미 원소가 100개 있으면 실패합니다(101번째 원소를 추가할 수 없습니다).명령들의 나열인 프로그램이 주어질 때, 초기 리스트에서 시작하여 Hal의 계산기로 이를 실행하고 최종 리스트를 구하세요.
첫째 줄에 명령의 개수 N (0 ≤ N ≤ 10000) 이 주어집니다. 이어지는 N 개의 줄에는 각각 하나의 명령이 주어지며, 명령은 HASH, DOLLAR, SWAP, DROP, DUP, ROT 중 하나입니다.
모든 명령이 성공적으로 실행되면, 최종 리스트를 첫 번째(맨 위) 원소부터 마지막 원소까지 한 줄에 하나씩 출력합니다. 어떤 명령이라도 실패하면 ERROR 만 한 줄에 출력합니다.