/* 数塔变形 一看代码 就明白 6 5 1 4 1 6 1 7 2 7 2 8 3 0 4 */ #include <cstdio> #include <cstdlib> #include <iostream> #include <cstring> #include <algorithm> #include <cmath> using namespace std; int dp[100002][11]; int main() { int n; int t,pos; int max_t=0; while(scanf("%d",&n),n!=0) { memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) { scanf("%d %d",&pos,&t); dp[t][pos]++; if(max_t<t)max_t = t; } for(int i=max_t;i>=0;i--) { dp[i][0] += max(dp[i+1][1],dp[i+1][0]); dp[i][10] += max(dp[i+1][9],dp[i+1][10]); for(int j=1;j<10;j++) dp[i][j] += max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1]); } printf("%d\n",dp[0][5]); } return 0; }