만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

명절은 언제인가?

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

요약
1월 1일의 요일과 윤년 여부가 주어질 때, 각 공휴일이 해당 달의 첫 번째 또는 마지막 특정 요일인 날짜를 구합니다.
난이도

쉬움10점 중 3점

유형
구현, 수학
정답자
아직 제출이 없습니다

문제

얼룩말 마티는 신나게 노는 것을 아주 좋아한다. 안타깝게도 직장 상사가 매우 엄격해서, 마티는 명절에만 놀 수 있다.

마다가스카르에서는 러시아의 날이나 국제 여성의 날 같은 명절을 지키지 않는다. 날짜가 고정된 명절은 아예 없다. 모든 명절은 「1월의 첫 번째 월요일」이나 「7월의 마지막 수요일」 같은 날짜에 든다. 더 정확히 말하면, 명절은 어떤 달에서 특정 요일의 첫 번째 날이거나 마지막 날 중 하나이다. 요일과 달은 어느 것이든 될 수 있다. 마다가스카르의 달력은 러시아에서 쓰는 달력과 완전히 같다.

마티는 매년 명절 날짜를 계산하느라 오랜 시간을 쓴다. 이 과정을 자동화하도록 그를 도와주자.

입력

첫 줄에 마티가 날짜를 알고 싶어 하는 명절의 개수 nn (1≤n≤1681 \le n \le 168)이 주어진다.

둘째 줄에는 마티가 관심 있는 해의 1월 1일이 무슨 요일인지가 먼저 주어진다. 그 뒤에 공백을 두고 해당 해가 윤년이면 yes, 아니면 no가 주어진다.

다음 nn개의 줄에는 명절이 하나씩 주어진다. 각 줄의 첫 단어는 first 또는 last이며, 명절이 그 달에서 해당 요일의 첫 번째 날인지 마지막 날인지를 나타낸다. 이어서 요일 이름, of, 달 이름이 공백으로 구분되어 주어진다.

입력의 모든 글자는 소문자이다. 요일과 달의 이름은 아래 표의 이름과 같다.

출력

각 명절마다 한 줄에 하나씩, 주어진 해에서 그 명절이 드는 날짜(월의 며칠인지)를 출력한다.

힌트

요일 이름 대응표이다.

마다가스카르 요일 이름러시아 요일 이름
monday월요일
tuesday화요일
wednesday수요일
thursday목요일
friday금요일
saturday토요일
sunday일요일

달 이름 대응표이다.

마다가스카르 달 이름러시아 달 이름날 수
january1월31
february2월윤년이면 29, 아니면 28
march3월31
april4월30
may5월31
june6월30
july7월31
august8월31
september9월30
october10월31
november11월30
december12월31

예제2

  1. 예제 1

    입력
    5
    wednesday no
    last monday of january
    first friday of february
    last saturday of september
    first sunday of july
    first monday of january
    
    예상 출력
    27
    7
    27
    6
    6
    
  2. 예제 2

    입력
    2
    monday yes
    first monday of january
    last wednesday of february
    
    예상 출력
    1
    28