#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int inf = 1 << 29;
#define MAX 100050
int dp[13][MAX],v[13][MAX], n;
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
while(1)
{
scanf("%d",&n);
if(n==0)break;
int T = 0, x, t;
memset(dp, 0, sizeof(dp));
memset(v,0,sizeof(v));
for(int i = 0; i < 13; i++)
{
dp[i][0] = -inf; //也可不用v,直接用dp代替
v[i][0]=-inf;
}
dp[6][0] = 0; //初始状态为0
for(int i = 0; i < n; i++)
{
scanf("%d%d", &x, &t);
v[x+1][t]++; //此处用到一点技巧,将坐标系往右移一位,则后面的j-1不会出现为负数
T = max(T, t);
}
for(int i = 1; i <= T; i++)
for(int j = 1; j <= 11; j++)
dp[j][i]=v[j][i]+max(dp[j-1][i-1], max(dp[j][i-1], dp[j+1][i-1]));
int ans = 0;
for(int i = 1; i <= 11; i++)
ans = max(ans, dp[i][T]); //取最大值
printf("%d\n",ans);
}
return 0;
}
/*input:
6
5 1
4 1
6 1
7 2
7 2
8 3
0
output:
4*/