#include<bits/stdc++.h>
using namespace std;
const double EPS=1e-5;
struct Boss{
int x,y;
Boss(int x=0,int y=0):x(x),y(y){}
void read(){
cin>>x>>y;
return;
}
}a[3001];
int n,row,line,f[3002];
double l=0,r,mid;
double dist(double a,double b){
return a*a+b*b;
}
bool ismergable(Boss a,Boss b,double k){
return dist(abs(a.x-b.x),abs(a.y-b.y))<=k*k*4;
}
int findfa(int u){
return (u==f[u])?u:(f[u]=findfa(f[u]));
}
void merge(int u,int v){
int fu=findfa(u),fv=findfa(v);
f[fu]=fv;
}
bool check(double k){
for(int i=0;i<=n+1;i++)
f[i]=i;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++)
if(ismergable(i,j,k))
merge(i,j);
if(a[i].x-k<=1||a[i].y+k>=line)
merge(0,i);
if(a[i].y-k<=1||a[i].x+k>=row)
merge(n+1,i);
}
return findfa(0)!=findfa(n+1);
}
int main(){
cin>>n>>row>>line;
r=min(row,line);
for(int i=1;i<=n;i++)
a[i].read();
while(l+EPS<r){
mid=(l+r)/2;
if(check(mid))
l=mid;
else
r=mid;
}
cout<<fixed<<setprecision(2)<<l;
return 0;
}