Иногда очень важно знать, каким днём недели будет заданная дата. И мы начинаем искать ближайший календарь. Немного удачи — и календарь найден. Только для того, чтобы узнать, что он не содержит нужной даты. Какая жалость!
Поэтому вас попросили создать календарь, который сможет обработать любую дату в диапазоне лет от 1600 до 2400. По дате ваша программа должна напечатать (см. примеры ниже) правильный календарь для месяца, содержащего дату. Не забудьте про високосные годы. Год является високосным, если он кратен четырём, кроме случая, когда он кратен 100, кроме случая, когда он кратен 400. Например, 1996 — високосный год, 1900 — не високосный (кратен 4 и кратен 100), 2000 — високосный (кратен 4, кратен 100 и кратен 400).
Исходные данные
Первая строка ввода содержит дату, то есть три целых числа: день (1–31), месяц (1–12) и год (1600–2400), разделённые пробелами.
Результат
Вывод должен содержать ровно 7 строк с правильным календарём на месяц, в котором содержится заданная дата. Формат календаря дан в примере ниже (для удобства чтения пробелы в примере вывода заменены точками, настоящий вывод должен содержать пробелы). И не забудьте отметить заданную дату квадратными скобками.
Примеры
исходные данные | результат |
---|
16 3 2002
| mon........4...11...18...25
tue........5...12...19...26
wed........6...13...20...27
thu........7...14...21...28
fri...1....8...15...22...29
sat...2....9..[16]..23...30
sun...3...10...17...24...31
|
1 3 2002
| mon........4...11...18...25
tue........5...12...19...26
wed........6...13...20...27
thu........7...14...21...28
fri.[.1]...8...15...22...29
sat...2....9...16...23...30
sun...3...10...17...24...31
|
Автор задачи: Александр Клепинин
Источник задачи: Соревнование команд УрГУ, март 2002