#include<bits/stdc++.h>
using namespace std;
struct edge
{
int x,y;
}e[505];
int n,k,ans;
int f[505][505];
bool cmp(edge a,edge b)
{
if(a.x == a.x)return a.y < b.y;
else return a.x < b.x;
}
int main()
{
cin>>n>>k;
for(int i = 1;i <= n;i ++)
cin>>e[i].x>>e[i].y;
sort(e + 1,e + n + 1,cmp);
for(int i = 1;i <= n;i ++)
{
for(int j = 0;j <= k;j ++)
{
f[i][j] = j + 1; //这里就是初始化
for(int t = 1;t < i;t ++)
{
if(e[t].x > e[i].x || e[t].y > e[i].y)continue;
int l = abs(e[i].x - e[t].x) + abs(e[t].y - e[i].y) - 1;
if(j - l < 0)continue;
f[i][j] = max(f[i][j],f[t][j - l] + l + 1);
ans = max(ans,f[i][j] + k - j);
}
}
}
cout<<ans;
return 0;
}
连样例1都过不去。。。