달력 조각

1900년부터 2100년까지 각 연도의 28행 73열 달력을 만들고, 주어진 작은 조각이 어느 위치에서든 그대로 나타나는 연도를 모두 찾는다.

보통5구현시뮬레이션수학아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

어느 해인지 알 수 없는 달력이 커다란 문자 행렬에 적혀 있다. 행렬의 각 칸은 영어 대문자, 숫자, 마침표 . 중 하나다. 달력은 다음 규칙으로 만든다.

  • 한 달은 정확히 8행 17열을 차지한다.

    • 달 이름은 영어 대문자로 첫째 행의 둘째 열부터 적는다.

    • 그 달의 모든 날짜는 너비 2열, 높이 7행인 그룹 여섯 개에 적는다. 이웃한 두 그룹 사이에는 마침표로 채운 빈 열이 하나 있다.

    • 한 그룹에는 같은 주에 속한 연속된 날짜가 들어간다.

    • 날짜는 한 자리 또는 두 자리다. 한 자리 날짜는 그룹의 오른쪽 열에 적는다.

      • 첫째 행이 월요일이다.
      • 첫째 그룹에는 날짜가 적어도 하나 들어가야 하고, 다섯째와 여섯째 그룹은 비어 있을 수 있다. 예를 들어 28일까지 있는 달이 월요일에 시작하면 그렇다.
  • 열두 달은 세 단으로 나누어 배치하고, 이웃한 두 단 사이에는 빈 행이 하나 있다. 한 단에는 연속된 네 달이 들어가고, 이웃한 두 달 사이에는 빈 열이 하나 있다.

  • 달력의 네 변에는 모두 한 행 또는 한 열짜리 빈 여백이 있다.

따라서 달력 전체는 정확히 28행 73열이다. 위 그림은 2002년 달력의 오른쪽 아래 부분이다.

고고학자들이 이런 달력에서 잘라낸 직사각형 조각 하나를 찾았다. 이 조각은 회전하지도 않았고 다른 어떤 방식으로도 바뀌지 않았다. 조각을 잘라낼 수 있었던 1900년부터 2100년까지의 모든 연도를 구하는 프로그램을 작성하시오.

달 이름은 순서대로 JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER다.

어떤 해가 400으로 나누어떨어지거나, 4로 나누어떨어지면서 100으로 나누어떨어지지 않으면 윤년이다. 1900년 1월 1일은 월요일이었다.

입력

첫째 줄에 조각의 행 수와 열 수를 나타내는 자연수 NNMM이 주어진다 (2N,M102 \le N, M \le 10). 다음 NN개의 줄에는 조각의 한 행씩 MM개의 문자가 주어진다.

출력

찾은 연도를 오름차순으로 한 줄에 하나씩 출력한다.

입력은 답이 적어도 하나 있는 경우만 주어진다.