슬러피(Slurpy) 판별

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

문제

제약 조건의 집합에 따라 문자열을 인식하는 것은 흔한 계산 문제입니다. Slurpy는 특정 성질을 만족하는 문자열입니다. 프로그램은 여러 문자열을 입력받아, 각 문자열이 Slurpy인지 아닌지를 출력합니다.

Slump은 다음 성질을 갖는 문자열입니다.

  1. 첫 문자가 D 또는 E입니다.
  2. 첫 문자 뒤에 하나 이상의 F가 이어집니다.
  3. F들의 뒤에는 또 다른 Slump 또는 G가 오며, 이것이 Slump을 끝맺습니다. 예를 들어 DFFEFFFG는 Slump입니다. D로 시작하고 F 두 개가 이어진 뒤, Slump EFFFG로 끝나기 때문입니다.
  4. 그 밖의 문자열은 Slump이 아닙니다.

Slimp은 다음 성질을 갖는 문자열입니다.

  1. 첫 문자가 A입니다.
  2. 길이가 2인 Slimp라면, 두 번째이자 마지막 문자가 H입니다.
  3. 길이가 2가 아니라면, 다음 두 형태 중 하나입니다.
    • A 다음에 B, 그다음에 Slimp, 그다음에 C.
    • A 다음에 Slump(위 정의 참고), 그다음에 C.
  4. 그 밖의 문자열은 Slimp이 아닙니다.

Slurpy는 Slimp 뒤에 Slump이 이어진 문자열입니다.

예시

  • Slump: DFG, EFG, DFFFFFG, DFDFDFDFG, DFEFFFFFG
  • Slump이 아님: DFEFF, EFAHG, DEFG, DG, EFFFFDG
  • Slimp: AH, ABAHC, ABABAHCC, ADFGC, ADFFFFGC, ABAEFGCC, ADFDFGC
  • Slimp이 아님: ABC, ABAH, DFGC, ABABAHC, SLIMP, ADGC
  • Slurpy: AHDFG, ADFGCDFFFFFG, ABAEFGCCDFEFFFFFG
  • Slurpy가 아님: AHDFGA, DFGAH, ABABCC

입력

첫째 줄에 문자열의 개수 $N$ ($1 \le N \le 10$)이 주어집니다. 다음 $N$개의 줄에는 각각 1자 이상 60자 이하의 알파벳 문자열이 주어집니다.

출력

각 입력 문자열에 대해, 그 문자열이 Slurpy이면 YES, 아니면 NO를 한 줄에 하나씩 출력합니다.