HJS

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

요약
길이가 같은 세 H/J/S 문자열이 주어질 때, H, J, S에 서로 다른 숫자를 하나씩 대입해 첫 문자열이 두 번째보다, 두 번째가 세 번째보다 작아지도록 만들 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
완전 탐색, 그리디, 수학
정답자
아직 제출이 없습니다

문제

2123년에는 수를 표현하는 색다른 방식인 "홍진수"가 존재한다.

홍진수는 총 3가지의 문자 H, J, S로 이루어진 문자열로, 각 문자 H, J, S에 11부터 99까지의 숫자를 서로 중복되지 않게 하나씩 대입하여 수를 표현할 수 있다. 예를 들어, 홍진수 HJSHJH는 358353358353, 914919914919는 표현할 수 있지만, 131131131131, 555555555555는 표현할 수 없다.

길이가 같은 세 개의 홍진수 PP, QQ, RR이 주어졌을 때, 각 홍진수가 표현하는 수 pp, qq, rr이 p\<q\<rp\<q\<r을 만족하게 하는 H, J, S가 존재하는지 확인하자. H, J, S에 대입한 수는 PP, QQ, RR이 모두 공유한다.

입력

첫 번째 줄에는 PP, QQ, RR의 길이 NN이 주어진다. 두 번째 줄부터 세 개의 줄에 걸쳐 문자열 PP, QQ, RR이 차례대로 주어진다. (1≤N≤300,000)(1 \le N \le 300\\,000)

출력

첫 번째 줄에 조건에 맞는 H, J, S가 존재한다면 HJS! HJS! HJS!를 출력하고, 그렇지 않으면 Hmm...를 출력한다.

예제2

  1. 예제 1

    입력
    6
    HJSHJS
    JHSJHS
    SHJSHJ
    
    예상 출력
    HJS! HJS! HJS!
    
  2. 예제 2

    입력
    10
    HHJHSSHJJH
    HHJHHJHJJS
    HHJSHJHJSJ
    
    예상 출력
    Hmm...