#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define FORE(i,a,b) for(int i=(a);i<=(b);++i)
#define REPE(i,n) FORE(i,0,n)


typedef struct P { int x,y; } P;
bool operator<(const P &a,const P &b) { if(a.y!=b.y) return a.y<b.y; return a.x<b.x; }

int n,k;

void run() {
	scanf("%d%d",&n,&k);
	vector<P> p(n);
	REP(i,n) scanf("%d%d",&p[i].x,&p[i].y); sort(p.begin(),p.end());
	vector<int> l(k),h(k),maxdx(k);
	REP(j,k) while(j*j+(maxdx[j]+1)*(maxdx[j]+1)<k*k) ++maxdx[j];
	long long ret=0;
	REP(i,n) {
		REP(j,k) {
			while(l[j]<i&&p[l[j]].y<p[i].y-j) ++l[j];
			while(l[j]<i&&p[l[j]].y==p[i].y-j&&p[l[j]].x<p[i].x-maxdx[j]) ++l[j];
			while(h[j]<i&&p[h[j]].y<p[i].y-j) ++h[j];
			while(h[j]<i&&p[h[j]].y==p[i].y-j&&p[h[j]].x<=p[i].x+maxdx[j]) ++h[j];
			ret+=h[j]-l[j];
		}
	}
	printf("%lld\n",ret);
}

int main() {
	int n; scanf("%d",&n); FORE(i,1,n) run();
	return 0;
}
