상수를 위한 언어

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

문제

한 컴퓨터공학 교수가 YACL("Yet Another Constant Language")이라는 새로운 프로그래밍 언어를 개발하고 있다. 이 언어는 매우 단순해서 다음 네 개의 명령어만 가진다.

  • C+1 — 상수 $1$을 만든다.
  • C-1 — 상수 $-1$을 만든다.
  • INCR — 현재 만들고 있는 상수에 $1$을 더한다.
  • DBL — 현재 만들고 있는 상수에 $2$를 곱한다.

프로그램은 이 명령어들을 한 줄에 하나씩 나열한 것이며, 위에서 아래로 순서대로 실행된다. 프로그램을 작고 빠르게 유지하기 위해 다음 규칙을 지켜야 한다.

  • 모든 프로그램은 반드시 C+1 또는 C-1로 시작해야 한다.
  • 주어진 상수 $C$는 가능한 한 적은 수의 명령어로 만들어야 한다.
  • 같은 (최소) 명령어 수로 $C$를 만드는 프로그램이 여러 개라면, 그중 가장 빠른 것을 사용해야 한다. 실행 시간은 DBL이 $T$ 나노초, INCR이 $2T$ 나노초 걸린다고 가정한다.

주어지는 각 상수에 대해, 위의 모든 규칙을 만족하면서 그 상수를 만드는 프로그램을 출력하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 만들어야 할 $0$이 아닌 정수 상수 하나가 적힌 한 줄이며, $-32768 \le C \le 32767$을 만족한다. 정수 $0$ 하나만 있는 줄은 입력의 끝을 나타내며 처리하지 않는다.

출력

각 테스트 케이스마다 먼저 Constant n 한 줄을 출력한다. 여기서 n은 해당 상수이다. 그다음 그 상수를 만드는 가장 효율적인 프로그램을 한 줄에 명령어 하나씩 출력한다. 연속한 두 테스트 케이스 사이에는 빈 줄을 하나 출력한다.