많은 암호 연산은 전용 기계나 오토마타로 훨씬 빠르게 계산할 수 있다. 그런 기계의 단점은 누군가가 그 기계용 프로그램을 직접 작성해야 한다는 점이다. 만약 다른 프로그램을 자동으로 만들어 주는 프로그램을 쓸 수 있다면 얼마나 편할까. 이 문제에서는 그런 범용 생성기가 존재한다고 가정한다.
당신의 과제는 아래에 정의한 스택 머신용 프로그램을 자동으로 생성하는 프로그램을 작성하는 것이다.
스택 머신은 정수만 저장하는 스택 하나로 동작한다. 프로그램은 한 줄에 하나의 명령으로 구성되며, END가 나오면 끝난다.
NUM X: 정수 X를 스택에 넣는다. (0 ≤ X ≤ 10^9)POP: 맨 위 원소를 제거한다.INV: 맨 위 원소의 부호를 바꾼다.DUP: 맨 위 원소를 복제한다.SWP: 맨 위 두 원소의 순서를 바꾼다.ADD, SUB, MUL, DIV, MOD: 맨 위 두 원소를 꺼내 연산한 뒤 결과를 넣는다. 두 번째로 꺼낸 값이 피연산자의 앞쪽, 첫 번째로 꺼낸 값이 뒤쪽이다. DIV와 MOD는 0으로 나누면 실패한다.프로그램을 실행할 때 스택에는 입력값 Vi 하나만 있다. 실행이 끝났을 때 스택에 정확히 하나의 값 Ri만 남아야 한다.
입력은 여러 테스트 케이스로 이루어진다. 각 테스트 케이스는 정수 N(1 ≤ N ≤ 5)으로 시작하며, N은 그 케이스에서 맞춰야 할 입력-출력 쌍의 개수이다. 다음 N줄에는 각각 정수 Vi와 Ri가 주어진다. Vi(0 ≤ Vi ≤ 10)는 입력값이고 Ri(0 ≤ Ri ≤ 20)는 그 입력에 대해 스택에 남아야 하는 값이다. 모든 Vi는 서로 다르다.
각 테스트 케이스 뒤에는 빈 줄이 하나 있다. N이 0인 줄이 나오면 입력이 끝난다.
각 테스트 케이스마다, 그 케이스의 모든 (Vi, Ri) 쌍을 동시에 만족하는 스택 머신 프로그램을 하나 출력한다. 프로그램은 위 명세의 형식, 공백, 길이 제한, 스택 크기 제한을 모두 지켜야 하며 실행 중 오류가 나면 안 된다.
각 프로그램 뒤에는 빈 줄을 하나 출력한다. 마지막 프로그램 뒤에도 빈 줄을 출력한다.