#include<bits/stdc++.h>
using namespace std;
int n,d,x[200010],y[200010];
vector<int>a[400010];
map<long long,int>mp;
bool solve() {
mp.clear();
for(int i=1;i<=n;i++) {
mp[1ll*x[i]*1e5+y[i]]=i;
a[x[i]+y[i]].push_back(i);
}
for(int i=1;i<=n;i++) {
int x3=x[i]+d/2,y3=y[i]-d/2;
if(x3<0||y3<0||mp[1ll*x3*1e5+y3]==0) continue ;
int f=0,x1=x[i]+y[i]-d;
if(x1<0||a[x1].size()==0) continue ;
for(int j=0;j<a[x1].size();j++) {
int v=a[x1][j];
if(abs(x3-x[v])+abs(y3-y[v])==d) {
printf("%d %d %d\n",v,i,mp[1ll*x3*1e5+y3]);
for(int k=1;k<=n;k++) a[x[k]+y[k]].clear();
return true;
}
}
}
for(int k=1;k<=n;k++) a[x[k]+y[k]].clear();
return false;
}
signed main() {
int t;
cin>>t;
while(t--) {
scanf("%d%d",&n,&d);
for(int i=1;i<=n;i++) {
scanf("%d%d",&x[i],&y[i]);
x[i]+=1e5,y[i]+=1e5;
}
if(solve()) continue ;
for(int i=1;i<=n;i++) x[i]=-(x[i]-1e5)+1e5;
if(solve()) continue ;
for(int i=1;i<=n;i++) y[i]=-(y[i]-1e5)+1e5;
if(solve()) continue ;
for(int i=1;i<=n;i++) x[i]=-(x[i]-1e5)+1e5;
if(!solve()) printf("0 0 0\n");
}
return 0;
}