#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int day[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int N = 10000;
struct node {
int y;
int r;
} a[N];
int n;
bool cmp(node a, node b) {
if (a.y == b.y)
return a.r < b.r;
else
return a.y < b.y;
}
int make(node a, node b) {
if(a.y==b.y&&a.r+1==b.r)
return 0;
if(a.y==b.y)
return b.r-a.r+1;
int num = 0;
for (int i = a.y + 1; i <= b.y - 1; i++)
num += day[i];
num += day[a.y] - a.r - 1 + 1;
num += b.r - 1;
return num;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i].y >> a[i].r;
if(n==0)
{
cout<<86400;
return 0;
}
int ans = 0;
int dayn = 0;
for (int i = 1; i <= a[1].y - 1; i++) {
dayn += day[i];
}
ans = max(ans, dayn + a[1].r-1);
dayn=0;
for(int i=a[n].y+1;i<=12;i++)
dayn+=day[i];
ans=max(ans,dayn+day[a[n].y]-a[n].r-1+1);
sort(a + 1, a + 1 + n, cmp);
for (int i = 1; i < n; i++) {
ans = max(ans, make(a[i], a[i + 1]));
}
double num = ans*1.0 * 86400 / 366*1.0;
cout<<round(num);
return 0;
}