#include using namespace std; constexpr int DAYS = 365; constexpr int mls[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int calc(const string &ln) { int m = int(ln[0]-'0')*10 + int(ln[1]-'0'); int d = int(ln[3]-'0')*10 + int(ln[4]-'0'); --m, --d; int r = d; for (int i = 0; i < m; ++i) r += mls[i]; return r; } int fdist(int d1, int d2) { int r = d2 - d1; if (r < 0) r += DAYS; return r; } string nameof(int v) { int m = 0, d = v, i = 0; while (i < 12 && d >= mls[i]) d -= mls[i], ++i, ++m; ++m, ++d; return string(1, '0'+m/10) + string(1, '0'+m%10) + "-" + string(1, '0'+d/10) + string(1, '0'+d%10); } int main() { int n; cin >> n; vector bds(n); for (int &bd : bds) { string ln; cin >> ln >> ln; bd = calc(ln); } sort(bds.begin(), bds.end()); bds.erase(unique(bds.begin(), bds.end()), bds.end()); n = (int)bds.size(); int oct27 = calc("10-27"); int best = 0, bestlen = -1, bestod = -1; for (int i = 0; i < n; ++i) { int nd = (DAYS+bds[(i+1)%n]-1) % DAYS; int od = (fdist(oct27, nd) + 2*DAYS - 1) % DAYS + 1; if ((fdist(bds[i], nd) > bestlen) || (fdist(bds[i], nd) == bestlen && od < bestod)) { best = nd; bestlen = fdist(bds[i], nd); bestod = od; } } cerr << "Best = " << best << " with " << bestlen << endl; cout << nameof(best) << endl; }