MJH 스크립트

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

문제

정후와 함께 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>는 다음 중 하나입니다.

    • $1\,000\,000\,007$ 미만의 음이 아닌 정수로, 그 값을 나타냅니다.
    • 로마자 소문자로, 그 이름을 가진 변수의 값을 나타냅니다.
    • $1\,000\,000\,007$ 미만, 2 이상의 정수 하나와 로마자 소문자 하나를 연달아 쓴 것으로, 정수와 그 이름을 가진 변수의 값을 곱한 값을 나타냅니다.

MJH 스크립트를 이해했다는 것을 증명하기 위해, 주어진 프로그램을 실행해 봅시다.

입력

첫째 줄에 정수 $P$가 주어집니다.

그다음 줄부터 프로그램이 주어집니다. 불필요한 공백은 주어지지 않습니다.

출력

PRINT의 값을 한 줄에 하나씩 출력합니다. 단, 그 횟수가 10회 이상일 경우 첫 5회와 마지막 5회만 차례로 출력합니다.

그다음 줄에 a부터 z까지의 변수의 값을 공백으로 구분하여 차례로 출력합니다.

제한

  • 1 ≤ P ≤ 1012
  • 주어진 프로그램은 유한한 시간 안에 종료됩니다.
  • 프로그램의 길이는 1,000,000을 넘지 않습니다. 프로그램의 길이에 줄 바꿈은 포함하지 않습니다.