마법의 주문

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

마법사의 일에 끼어들지 마라. 그들은 속을 알 수 없고 쉽게 노한다.

길도르

간달프는 사우론과 싸우려고 날마다 비술을 다룬다. 룬을 잘못 늘어놓으면 아무도 뜻하지 않은 일이 벌어지므로, 간달프는 제자인 너에게 주문을 외우기 전에 그 결과를 알려 주는 장치를 만들라고 맡겼다.

주문은 한 줄에 하나씩 적힌 명령의 나열이다. 명령은 요정어로 쓰여 있고, 간달프가 아래에 뜻을 적어 두었다.

힘의 단어동작
arth [lbl]지역[lbl]로 이동
pen [var1] [var2] [lbl]더 작음[var1] < [var2]이면 [lbl]로 이동
muindor [var1] [var2] [lbl]형제[var1] == [var2]이면 [lbl]로 이동
sad [lbl]장소[lbl] 레이블
tangado [var]세우다[var]를 정수로 선언하고 0으로 설정
ost [var1] [var2]요새[var1]을 크기 [var2]인 정수 배열로 선언
teithant [string]쓰다[string]과 줄바꿈을 표준 출력에 출력
canad [var]외치다[var]와 줄바꿈을 표준 출력에 출력
anno [var1] [var2]주다var1 := var2
aderthad [var1] [var2]다시 만나다var1 := var1 + var2
adlanna [var1] [var2]기울다var1 := var1 / var2 (정수 나눗셈)
adlegi [var1] [var2]풀어 주다var1 := var1 - var2
athrado [var1] [var2]건너다var1 := var1 * var2
awarthad버리다종료

몇 가지 짚어 둔다.

  • [var]는 다음 세 가지 중 하나다.
    1. 정수 상수. 예를 들어 6이다. 정수 상수에 값을 넣으려 하면 아무 일도 일어나지 않고 다음 명령으로 넘어간다.
    2. tangado로 선언한 변수. 예를 들어 shadowfax다. C나 Java의 int처럼 다룬다.
    3. ost로 선언한 배열의 칸. 예를 들어 moria[4]다. 첨자 자리에도 [var]가 오므로 첨자는 중첩된다.
  • [string]은 큰따옴표로 감싼 문자열 상수다. 안에 큰따옴표와 줄바꿈은 들어가지 않는다.
  • [lbl]은 레이블이다. 레이블 이름은 변수 이름과 같을 수 있지만 둘은 아무 관계가 없다. 레이블은 미리 선언하지 않으므로, 해석하기 전에 주문 전체를 훑어 레이블 위치를 찾아 두면 편하다.
  • arth를 실행하면 짝이 되는 sad 바로 다음 명령부터 이어서 해석한다. arth가 가리키는 sad가 주문의 뒤쪽에 있어도 된다.
  • sad는 변수를 바꾸지 않고 arth, pen, muindor가 뛰어올 자리만 표시한다.
  • ost로 만든 배열은 모든 칸이 0으로 초기화된다.
  • 변수 이름과 레이블 이름은 영문 대소문자로만 이루어진다.
  • 나눗셈은 0 쪽으로 버린다. 7 / 2는 3이고 -7 / 2는 -3이다.
  • 마지막 명령까지 실행하고 뒤에 명령이 없으면 awarthad와 똑같이 주문이 끝난다.

제한:

  • 주문의 명령 줄은 200줄 이하다.
  • 배열의 크기는 1 이상 1000 이하다.
  • 주문은 명령을 100000번 이하 실행하고 끝난다.
  • 주문이 다루는 모든 값은 231-2^{31} 이상 23112^{31}-1 이하다.
  • 선언하지 않은 변수를 읽거나, 배열 밖의 칸을 건드리거나, 0으로 나누거나, 없는 레이블로 뛰는 주문은 주어지지 않는다.

입력

주문 하나가 한 줄에 명령 하나씩 주어진다. 마지막 명령 다음 줄에는 END만 적힌 줄이 온다.

출력

주문이 출력하는 내용을 그대로 출력한다. 실행된 teithant와 canad마다 한 줄씩, 실행된 순서대로 출력한다.