Сколько дней существует?
Извини, но я не смогу прийти на вечеринку 10-го числа этого месяца. Ты знаешь, мои выходные только по четвергам. Я очень ждал эту вечеринку, но мне придется отказаться от присутствия на ней.
Это не имеет значения. Надеюсь, что ты будешь присутствовать в следующий раз.
Вы когда-нибудь сталкивались с такими ситуациями? Неважно, как сильно вы о них сожалеете, вы все равно ничего не можете сделать. Поэтому мы хотим найти способ узнать, сколько дней в периоде соответствуют нашим требованиям не только по дате, но и по дню недели.
В этой задаче мы рассматриваем специальный календарь от древних до будущих времен. В календаре мы устанавливаем следующее:
Год, предшествующий 1 году н.э., это 1 год до н.э. По соглашению, мы представляем 1 год до н.э. как 0, 2 год до н.э. как −1, и так далее.
В неделе семь дней: понедельник, вторник, среда, четверг, пятница, суббота и воскресенье. Они следуют в этом порядке, повторяясь. В календаре 1 января 1 года н.э. — это понедельник. День недели другой даты определяется в соответствии с 1 января 1 года н.э.
Год, делящийся на 4, но не на 100, является високосным годом. Год, делящийся на 400, также является високосным годом. Это правило применяется к годам до н.э. Например, 5 год до н.э. является високосным, потому что этот год представлен как −4.
Год состоит из двенадцати месяцев. В январе, марте, мае, июле, августе, октябре и декабре по 31 дню. В апреле, июне, сентябре и ноябре по 30 дней. А в феврале 29 дней, если год високосный; 28 дней в противном случае.
Ваша программа должна обрабатывать даты от 2000000 года до н.э. до 2000000 года н.э.
Входные данные
Входной файл для этой задачи будет содержать серию наборов данных. Каждый набор данных будет дан в строке и начинаться с двух целых чисел. Первое целое число m (0 ≤ m ≤ 6) — это требуемый день недели, где m = 0 представляет воскресенье, m = 1 представляет понедельник, m = 2 представляет вторник и так далее. Второе целое число n (0 ≤ n ≤ 31) — это требуемая часть даты. После этого будут шесть целых чисел: y_1, m_1, d_1, y_2, m_2, d_2. y_1, m_1 и d_1 — это годовая, месячная и дневная части начальной даты, а y_2, m_2 и d_2 — это годовая, месячная и дневная части конечной даты. Вы можете предположить, что начальная и конечная даты будут соответствовать календарю. Конечная дата не будет раньше начальной даты.
Конец ввода обозначается строкой, содержащей два нуля. Эта строка не должна обрабатываться.
Выходные данные
Выходные данные для каждого набора данных должны содержать строку с целым числом, которое указывает, сколько дней соответствует нашим требованиям с начальной даты по конечную дату (включая начальную и конечную даты). Здесь мы говорим, что дата соответствует нашим требованиям, если день недели даты равен m и часть даты равна n. Вы не должны выводить никаких дополнительных пробелов или пустых строк в выводе.