#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
//英语 看博友分析
struct nod{
int x;
int y;
};
int n,r;
vector<nod> da;
int ans;
bool check(int tx,int ty)
{
int js=0;
for(int i=0;i<n;i++)
{
if(da[i].x>=tx && tx+r>=da[i].x && da[i].y>=ty && ty+r>=da[i].y)
{
js++;
}
}
ans=max(js,ans);
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>n>>r;
ans=0;
da.clear();
vector<int> xx;
vector<int> yy;
map<int,int> mx;
map<int,int> my;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
da.push_back((nod){x,y});
if(mx[x]==0)
{
mx[x]=1;
xx.push_back(x);
}
if(my[y]==0)
{
my[y]=1;
yy.push_back(y);
}
}
sort(xx.begin(),xx.end());
sort(yy.begin(),yy.end());
for(int i=0;i<xx.size();i++)
{
for(int j=0;j<yy.size();j++)
{
check(xx[i],yy[j]);
check(xx[i]-r,yy[j]);
check(xx[i]-r,yy[j]-r);
check(xx[i],yy[j]-r);
}
}
cout<<ans<<endl;
}
return 0;
}