Задача E. Вирус 10.10.10

Автор:А. Жуплев   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  

Условие

В преддверии очередной «красивой» даты —— 10 октября 2010 года —— суеверные пользователи Интернета были встревожены слухами о предстоящих сбоях в работе компьютеров. Особенный вирус, который получил условное название «три десятки» (по записи круглой даты 10.10.10) вызвал активное обсуждение на сайтах и в социальных сетях.

Напомним, что дата записывается в виде число.месяц.год. Существует несколько способов записи даты в данном формате: число и месяц могут быть записаны с лидирующим нулём (если значение не превышает 9), год может быть записан либо полностью, либо в виде последних двух цифр. Например, дата 2 марта 2004 года может быть записана как 02.03.2004, 2.03.04, 02.3.2004 и т.д.

Опасения, связанные с появлением вирусов к определённым круглым датам, возникают весьма часто, поэтому возникла необходимость расчёта ближайшей «красивой» даты для заданной даты.

Будем считать дату «красивой», если найдётся такой способ записи даты, что после удаления разделяющих точек, получившаяся строка удовлетворяет хотя бы одному из следующих условий:

Требуется написать программу, которая по указанной дате определит ближайшую следующую за ней (включая её саму) «красивую» дату.

Примечание: количество дней в месяцах равно 31, 28 или 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31. Год является високосным, если его номер кратен 4 и при этом не кратен 100 либо кратен 400.

Формат входного файла

Входной файл содержит три целых числа — DC MC YC, обозначающих дату, где DC — день, MC — месяц, YC — год.

Формат выходного файла

Выходной файл должен содержать три целых числа — DV MV YV, задающих ближайшую "красивую" дату, где DV — день, MV — месяц, YV — год.

Ограничения

1 ≤ DC ≤ 31, 1 ≤ MC ≤ 12, 1600 ≤ YC ≤ 9999

Входная дата корректна, т.е. день месяца не превышает количество дней в данном месяце данного года.

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
10 10 2010
10 10 2010
2
29 10 2010
1 11 2010
3
8 4 6579
9 7 6579

0.125s 0.007s 13