#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
int map[100001][11]={0};
int main()
{
int n,case_point,time,i,j;
while(scanf("%d",&n),n)
{
memset(map,0,sizeof(map));
int max_time=0;
for(i=1;i<=n;i++)
{
scanf("%d%d",&case_point,&time);
//将同一时间下落多次的记录下来
map[time][case_point]++;
if(time>max_time)
{//求最大的时间
max_time=time;
}
}
int zero;
for(i=max_time-1;i>=1;i--)
{
for(j=1;j<10;j++)
{//将后一秒的最大值与前一秒的相加,
//注意这里是比较三个数的大小,调用库函数max()
map[i][j]+=max(map[i+1][j-1],max(map[i+1][j],map[i+1][j+1]));
}
//考虑边界条件0,10;
map[i][0]+=max(map[i+1][0],map[i+1][1]);
map[i][10]+=max(map[i+1][10],map[i+1][9]);
}
//输出结果
printf("%d\n",max(map[1][4],max(map[1][5],map[1][6])));
}
return 0;
}