#include #include #include #include #include #include #include using namespace std; constexpr array month_days{{30,28,30,30,30,30,30,30,30,30,30,30}}; int date_to_day(int month, int day){ return accumulate(month_days.begin(), month_days.begin() + month-1, day - 1); } pair day_to_date(int day){ int m=0; for(; m < 12 && day >= month_days[m]; ++m) day -= month_days[m]; return {m+1, day+1}; } int main(){ int n; cin >> n; vector days; days.reserve(2*n); for(int i = 0; i < n; ++i){ string name; int day, month; char _; cin >> name >> month >> _ >> day; int yearday = date_to_day(month, day); days.push_back(yearday); days.push_back(yearday + 365); } sort(days.begin(), days.end()); const int target = date_to_day(10, 28); // target is october 28 pair best{-1,1}; // count, days after target for(int i = 0; i < 2*n - 1; ++i) best = max(best, {days[i+1] - days[i], -((365+days[i+1]-1 - target)%365)}); auto ans = day_to_date((365 + target - best.second) % 365); cout << (ans.first < 10 ? "0" : "") << ans.first << '-'; cout << (ans.second < 10 ? "0" : "") << ans.second << '\n'; return 0; }