며칠인가?
시간 제한2초메모리 제한512 MB
기원전 2000000년부터 서기 2000000년까지 확장한 그레고리력을 쓸 때, 두 날짜 사이에서 요일이 m이고 일이 n인 날의 수를 센다.
문제
"이번 달 10일 파티에 못 가서 미안해. 알다시피 내 휴일은 목요일밖에 없거든. 파티에 정말 가고 싶었는데, 참석을 포기해야 해."
"괜찮아. 다음에는 꼭 와 줘."
이런 상황을 겪어 본 적이 있는가? 아무리 아쉬워도 어쩔 수 없다. 그래서 우리는 날짜뿐 아니라 요일까지 원하는 조건에 맞는 날이 어떤 기간에 며칠 있는지 알아내는 방법을 찾고자 한다.
이 문제에서는 고대부터 미래까지 이어지는 특별한 달력을 생각한다. 이 달력에서는 다음과 같이 정한다.
- 이 달력에서 서기 1년의 바로 앞 해는 기원전 1년이다. 관례상 기원전 1년을 0으로, 기원전 2년을 -1로 나타내는 식으로 한다.
- 한 주에는 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일의 일곱 요일이 있다. 이 순서가 반복된다. 이 달력에서 서기 1년 1월 1일은 월요일이다. 다른 날짜의 요일은 서기 1년 1월 1일과 일관되게 정해진다.
- 4로 나누어떨어지지만 100으로는 나누어떨어지지 않는 해는 윤년이다. 400으로 나누어떨어지는 해도 윤년이다. 이 규칙은 기원전의 해에도 적용된다. 예를 들어 기원전 5년은 -4로 나타내므로 윤년이다.
- 한 해는 열두 달로 이루어진다. 1월, 3월, 5월, 7월, 8월, 10월, 12월은 31일까지 있다. 4월, 6월, 9월, 11월은 30일까지 있다. 2월은 그 해가 윤년이면 29일, 아니면 28일까지 있다.
- 프로그램은 기원전 2000000년부터 서기 2000000년까지의 날짜를 처리해야 한다.
입력
이 문제의 입력 파일에는 여러 데이터 세트가 들어 있다. 각 데이터 세트는 한 줄에 주어지며 두 정수로 시작한다. 첫 번째 정수 m (0 ≤ m ≤ 6)은 원하는 요일이고, m = 0은 일요일, m = 1은 월요일, m = 2는 화요일, 이런 식이다. 두 번째 정수 n (0 ≤ n ≤ 31)은 원하는 날짜의 일 부분이다. 그 뒤에 여섯 정수 y1, m1, d1, y2, m2, d2가 온다. y1, m1, d1은 시작 날짜의 연, 월, 일이고, y2, m2, d2는 끝 날짜의 연, 월, 일이다. 시작 날짜와 끝 날짜는 달력을 따르는 것으로 가정한다. 끝 날짜는 시작 날짜보다 앞서지 않는다.
입력의 끝은 두 개의 0이 있는 줄로 표시된다. 이 줄은 처리하지 않는다.
출력
각 데이터 세트의 출력에는 시작 날짜부터 끝 날짜까지(시작 날짜와 끝 날짜 포함) 원하는 조건에 맞는 날이 며칠인지 나타내는 정수 한 줄을 출력한다. 여기서 날짜의 요일이 m이고 날짜의 일 부분이 n이면 그 날짜가 원하는 조건에 맞는다고 한다. 출력에 여분의 공백이나 빈 줄을 출력하지 않는다.