记录
#include<bits/stdc++.h>
using namespace std;
int n,k,f[514][514];
struct node{
int x,y;
}a[514];
bool cmp(node a,node b){
if(a.x<b.x) return true;
else if(a.y<b.y) return true;
else return false;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
sort(&a[1],&a[n+1],cmp);
for(int i=1;i<=n;i++){
f[i][k]=1;
for(int j=1;j<=k;j++){
for(int t=1;t<i;t++){
if(a[t].x>a[i].x||a[t].y>a[i].y) continue;
int d=abs(a[i].x-a[t].x)+abs(a[i].y-a[t].y)-1;
if(j+d>k) continue;
f[i][j]=max(f[i][j],f[t][j+d]+d+1);
}
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=k;j++){
ans=max(ans,j+f[i][j]);
}
}
cout<<ans;
return 0;
}