옛날 조판은 어떻게 했을까?

시간 제한1초메모리 제한128 MB

문제

디지털 조판이 없던 시절, 조판은 숙련공만이 다룰 수 있는 기술이자 예술이었다. 지면을 아끼고 글자를 더 아름답게 보이게 하려고 특정 문자 조합을 하나의 글자로 합쳐 찍었는데, 이런 문자를 ligature라고 한다. 예를 들어 a-e의 ligature는 'æ'이고, f-i의 ligature는 'fi'이다. 가능한 ligature와 출력 코드는 힌트의 표에 정리되어 있다.

소문자 s를 찍는 방법에는 "long s"와 "short s" 두 가지가 있었다. 오늘날에는 short s 형태만 쓰인다. 어떤 s를 써야 하는지는 다음 규칙으로 결정한다.

  1. 단어의 끝에 있는 s, 또는 하이픈(-)이나 어퍼스트로피(`)처럼 단어 안의 구두점 바로 앞에 있는 s는 short s로 쓴다.
    • 예: programs, ſucceſs, hocus-pocus, revis'd
  2. f, b, k 바로 앞에 있는 s는 short s로 쓴다.
    • 예: transfer, husband, ask, ſucceſsful
  3. ss로 끝나는 단어 뒤에 s로 시작하는 단어가 합쳐져 한 단어 안에 sss가 생긴 경우, 가운데 s는 short s로 쓰고 나머지 s는 long s로 쓴다.
    • 예: croſsſtitch, croſsſtaff
  4. 위 경우에 해당하지 않는 s는 모두 long s로 쓴다.

여기서 "단어"는 "식별자"와 다르다. 식별자는 _나 $ 같은 구두점을 포함할 수 있지만, 단어는 문자만으로 이루어진 연속 구간이다. 따라서 radius3이나 adios_amigo 같은 식별자는 radiuſ3, adioſ_amigo가 아니라 radius3, adios_amigo로 조판된다.

입력

첫째 줄에 테스트 개수 P (1 <= P <= 1000)가 주어진다.

이후 P개의 줄이 주어지며, 각 줄은 길이가 1000자 이하인 문자열이다. 문자열은 알파벳 대문자, 알파벳 소문자, 숫자, 공백, 그리고 특수문자 .,"'$;:?()-<>=!로만 이루어진다.

출력

각 테스트 문자열을 적절한 ligature와 long s 코드로 바꾸어 출력한다. short s는 그대로 s로 출력한다. AEAe[AE], OEOe[OE]로 출력하고, aeoe는 각각 [ae], [oe]로 출력한다. 다른 조합은 힌트 표의 코드에 따른다.

힌트

입력심볼출력 코드
AE, AeÆ[AE]
aeæ[ae]
OE, OeŒ[OE]
oeœ[oe]
ct[ct]
ff[ff]
fi[fi]
fl[fl]
ffi[ffi]
ffl[ffl]
s (short)ss
s (long)ſ[longs]
si[longsi]
sh[longsh]
sl[longsl]
ss[longss]
st[longst]
ssi[longssi]

long s와 short s는 섞여 나올 수 있다. 예를 들어 crossstitch는 cro[longs]s[longst]itch가 된다. cro[longs]s[longs]titch는 올바른 출력이 아니다.