Markleft

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

문제

Markleft는 문장 부호로 서식을 지정하는 마크업 표기법이다. 규칙은 다음과 같다.

  • ^ 두 개 사이의 글자는 모두 대문자로 바꾼다. One^tWo^threEOneTWOthreE가 된다.
  • \ 두 개 사이에서는 큰따옴표마다 앞에 \를 하나씩 붙인다. Piglet \said "Hello"\Piglet said \"Hello\"가 된다.
  • # 두 개 사이의 수는 모두 16진수로 바꾼다. 이어진 숫자 한 덩어리가 수 하나이고, 수는 여섯 자리를 넘지 않으며, 16진수는 대문자로 쓰고 앞에 0을 붙이지 않는다. #Text with 31 12 and 64#Text with 1F C and 40이 된다.
  • < 두 개 사이의 글자는 순서를 뒤집는다. This <be reversed<oddThis desrever ebodd가 된다.
  • @ 두 개 사이의 글자는 그대로 옮긴다. 즉 안쪽의 마크업은 무시한다. 그래서 출력에 @ 문자를 넣는 방법은 없다. This is @\<<#@ verbatimThis is \<<# verbatim이 된다.

구간은 중첩할 수 있지만 괄호가 맞물리듯 올바르게 중첩해야 한다. ^aa<bcd<ee^AADCBEE가 된다. One #reverse me ^uppercase me # and more^는 중첩이 어긋나므로 잘못된 입력이다.

구간은 올바르게 중첩되는 첫 마크업 문자에서 닫힌다. abc^def^ghi^jkl^mno에는 중첩이 없고 abcDEFghiJKLmno가 된다. 같은 종류의 구간도 중첩될 때가 있다. 대개 효과가 크지 않지만 그렇지 않은 경우도 있어서, ab<cd^ef<gh<ij^kl<mnablkJIGHFEdcmn이 된다.

안쪽 구간을 먼저 처리하므로 <#31#<F1이 된다.

입력

입력은 서식을 지정할 Markleft 텍스트 여러 줄이다. 각 줄의 길이는 100자를 넘지 않고, 줄마다 따로 처리한다. 모든 줄의 마크업은 올바르다. # 한 글자만 있는 줄이 입력의 끝을 알린다.

출력

각 입력 줄의 서식 결과를 입력 순서대로 한 줄씩 출력한다. 끝을 알리는 # 줄에 대해서는 아무것도 출력하지 않는다.