#include using namespace std; #define x first #define y second #define pb push_back #define eb emplace_back #define rep(i,a,b) for(auto i = (a); i != (b); ++i) #define REP(i,n) rep(i,0,n) #define all(v) (v).begin(), (v).end() typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; const string BAPC_DATE = "10-27"; const int lens[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, maxn = 1000; int decodeDay(string s) { int month = (s[0] - '0') * 10 + (s[1] - '0'); int day = (s[3] - '0') * 10 + (s[4] - '0'); month--; day--; for (int i = 0; i < month; i++) day += lens[i]; return day; } string encodeDay(int i) { int month = 0; while (i >= lens[month]) i -= lens[month++]; month++; int day = i + 1; string S(5, '0'); S[2] = '-'; S[0] = month / 10; S[1] = month % 10; S[3] = day / 10; S[4] = day % 10; for (char &ch : S) if (ch != '-') ch += '0'; return S; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); for (int i = 0; i < 365; i++) { assert(decodeDay(encodeDay(i)) == i); } int N; cin >> N; string tmp; vector B(N); REP(i, N) cin >> tmp >> B[i]; const int INF = 2e9; vi v(365, INF); REP(i, N) v[decodeDay(B[i])] = 0; // reset! rep(i, 1, 365) v[i] = min(v[i], v[i - 1] + 1); // take the worst. v[0] = min(v[0], v[364] + 1); rep(i, 1, 365) v[i] = min(v[i], v[i - 1] + 1); // take the worst. v[0] = min(v[0], v[364] + 1); int s = (decodeDay(BAPC_DATE) + 1) % 365; int ret = s; rep(i, s, 365) if (v[i] > v[ret]) ret = i; rep(i, 0, s) if (v[i] > v[ret]) ret = i; cerr << ret << endl; cout << encodeDay(ret) << endl; return 0; }