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