#include<bits/stdc++.h>
using namespace std;
int n,m;
int dis[1505][15005],dp[1505];
struct node{
int x,y;
}p[1005];
bool cmp(node a,node b){
return a.x<b.x||(a.x==b.x&&a.y<b.y);
}
int main(){
cin>>n>>m;
int ans=0;
for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y;
sort(p+1,p+n+1,cmp);
for(int i=1;i<=n;i++){
dp[i]=1;
for(int j=1;j<i;j++){
dis[j][i]=abs(p[i].x-p[j].x)+abs(p[i].y-p[j].y);
if(dis[j][i]==1&&p[j].x<=p[i].x&&p[j].y<=p[i].y){
dp[i]=max(dp[i],dp[j]+1);
}
}
ans=max(ans,dp[i]);
}
cout<<ans<<"\n";
return 0;
}
玄关 40pts