MJH 스크립트
시간 제한1초메모리 제한1024 MB
26개 변수를 1,000,000,007로 나눈 나머지로 관리하며 MJH 스크립트를 실행한다. P번째 GOTO에서 무한 루프로 보고 종료하며, PRINT 값과 변수 값을 출력한다.
문제
정후와 함께 MJH 스크립트를 배웁시다.
<MJH 스크립트의 명세>
-
프로그램은
a부터z까지의 로마자 소문자 이름을 가지고 있는 26개의 변수를 이용합니다. -
각 변수의 초깃값은 0입니다.
-
프로그램은 하나 이상의 줄로 이루어집니다.
-
한 줄은 하나의 명령어로 이루어지며, 줄 바꿈으로 끝납니다.
-
가장 위의 줄인 첫째 줄부터 실행하여, 마지막 줄의 다음 줄로 이동한 경우 프로그램을 종료합니다.
-
명령어는 다음 중 하나입니다.
<lvalue> = <rvalue_1> + <rvalue_2> + ... + <rvalue_k>: 변수<lvalue>에<rvalue_1>부터<rvalue_k>까지의 값을 더한 값을 로 나눈 나머지를 대입한 후 다음 줄로 이동합니다. 는 1 이상의 정수입니다.<lvalue>는 로마자 소문자로, 변수의 이름입니다.GOTOx: 째 줄로 이동합니다. 는 프로그램의 줄의 수보다 작거나 같은 양의 정수입니다. 다만, 전체GOTO명령어를 통틀어GOTO명령어에 번째로 진입한 경우에는 무한 루프로 판단하여 프로그램을 즉시 종료합니다.PRINT <rvalue_1> + <rvalue_2> + ... + <rvalue_k>:<rvalue_1>부터<rvalue_k>까지의 값을 더한 값을 로 나눈 나머지를 출력한 후 다음 줄로 이동합니다. 는 1 이상의 정수입니다.
-
<rvalue_i>는 다음 중 하나입니다.- 미만의 음이 아닌 정수로, 그 값을 나타냅니다.
- 로마자 소문자로, 그 이름을 가진 변수의 값을 나타냅니다.
- 미만, 2 이상의 정수 하나와 로마자 소문자 하나를 연달아 쓴 것으로, 정수와 그 이름을 가진 변수의 값을 곱한 값을 나타냅니다.
MJH 스크립트를 이해했다는 것을 증명하기 위해, 주어진 프로그램을 실행해 봅시다.
입력
첫째 줄에 정수 가 주어집니다.
그다음 줄부터 프로그램이 주어집니다. 불필요한 공백은 주어지지 않습니다.
출력
PRINT의 값을 한 줄에 하나씩 출력합니다. 단, 그 횟수가 10회 이상일 경우 첫 5회와 마지막 5회만 차례로 출력합니다.
그다음 줄에 a부터 z까지의 변수의 값을 공백으로 구분하여 차례로 출력합니다.
제한
- 1 ≤ P ≤ 1012
- 주어진 프로그램은 유한한 시간 안에 종료됩니다.
- 프로그램의 길이는 1,000,000을 넘지 않습니다. 프로그램의 길이에 줄 바꿈은 포함하지 않습니다.