//动态规划问题,数塔问题,从下往上进行递加
#include<stdio.h>
#include<string.h>#define N 100000
int a[N+5][11];
int max1(int m,int n)
{
if(m>n)
return m;
return n;
}
int max2(int x,int y,int z)
{
if(x>y)
{
if(x>z)
return x;
else
return z;
}
else
{
if(y>z)
return y;
else
return z;
}
}
int main()
{
int n,i,j;
while(scanf("%d",&n))
{
if(n==0)
break;
memset(a,0,sizeof(a));
int count=0;
for(i=0;i<n;i++)
{
int x,T;
scanf("%d%d",&x,&T);
a[T][x]++;
if(T>count)
count=T;
}
for(i=count-1;i>=0;i--)
{
if(i<=4)
for(j=5-i;j<=5+i;j++)
a[i][j]+=max2(a[i+1][j-1],a[i+1][j],a[i+1][j+1]);
else
{
for(j=0;j<=10;j++)
{
if(j==0)
a[i][j]+=max1(a[i+1][j],a[i+1][j+1]);
else if(j==10)
a[i][j]+=max1(a[i+1][j-1],a[i+1][j]);
else
a[i][j]+=max2(a[i+1][j-1],a[i+1][j],a[i+1][j+1]);
}
}
}
printf("%d\n",a[0][5]);
}
return 0;
}