</pre><pre name="code" class="cpp">//78ms
#include <cstring>
#include <cstdio>
const int N=1e5+10;
int dp[N][13];
int Max(int a,int b,int c)
{
int tmp=a>b?a:b;
return tmp>c?tmp:c;
}
int main()
{
int n,x,t,i,j,mini;
// printf("%d\n",N);
while(scanf("%d",&n)==1&&n)
{
mini=0;
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&t);
{
dp[t][x+1]++;
if(t>mini)mini=t;
}
}
for(i=mini-1;i>4;i--)
for(j=1;j<12;j++)
dp[i][j]+=Max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1]);
for(i=4;i>=0;i--)
for(j=6-i;j<=6+i;j++)
dp[i][j]+=Max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1]);
printf("%d\n",dp[0][6]);
}
return 0;
}