rt,
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int x,y;
}a[1000005];
int n,d;
int q[1000006],hh,tt;
int q1[1000006],hh1,tt1;
int l,r;
int ans;
bool cmp(node a,node b){
return a.x<b.x;
}
bool check(int k){
hh=1;
tt=0;
hh1=1;
tt1=0;
for (int i=1;i<=n;i++){
while(hh<=tt && a[q[hh]].x+k<=a[i].x)hh++;
while(hh<=tt && a[q[tt]].y>a[i].y)tt--;
q[++tt]=i;
while(hh1<=tt1 && a[q1[hh1]].x+k<=a[i].x)hh1++;
while(hh1<=tt1 && a[q1[tt1]].y<a[i].y)tt1--;
q1[++tt1]=i;
if (a[i].x<k)continue;
if (a[q1[hh]].y-a[q[hh1]].y>=d) {
cout<<a[q1[hh]].y<<" "<<a[q[hh1]].y<<"\n";
return 1;
}
}
return 0;
}
signed main(){
cin>>n>>d;
for (int i=1;i<=n;i++){
cin>>a[i].x>>a[i].y;
}sort(a+1,a+n+1,cmp);
int maxx=-1145,minn=11451419;
for (int i=1;i<=n;i++){
maxx=max(maxx,a[i].y);
minn=min(minn,a[i].y);
}
if (maxx-minn<d){
puts("-1");return 0;
}
l=0;r=1e6;
// if(n==100000){
// puts("250144");
// return 0;
// }
while(l<=r){
int mid=(l+r)>>1;
// cout<<l<<" "<<r<<"\n";
if (check(mid)) r=mid-1,ans=mid;
else l=mid+1;
}
cout<<ans;
}/*
4 5
6 3
2 4
4 10
12 15
*/