#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<set>
#include<vector>
#include<cmath>
#define PII pair<int,int>
#define pb push_back
#define ep emplace_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){ if(c=='-') f=-1; c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
	return f==1?x:-x;
}
inline void print(int x){
	if(x<0) putchar('-'),x=~x+1;
	if(x>=10) print(x/10);
	putchar((x%10)|48);
}
int n;
struct edge{
	int u,v,w;
	bool operator <(const edge &x)const{
		return w<x.w;
	}
}e[100010];
int fa[210];
int m;
PII node[110];
int find(int x){
	return fa[x]==x?x:fa[x]=find(fa[x]) ;
}
int main(){
	n=read();
	for(int i=1;i<=n+2;++i) fa[i]=i;
	for(int i=1;i<=n;++i){
		int x=read(),y=read();
		node[i]=mp(x,y);
		e[++m].u=i,e[m].v=n+1,e[m].w=(100-y)*(100-y);
		e[++m].u=i,e[m].v=n+2,e[m].w=(y+100)*(y+100);
		for(int j=1;j<i;++j){
			e[++m].u=j,e[m].v=i,e[m].w=(x-node[j].fi)*(x-node[j].fi)+(y-node[j].se)*(y-node[j].se);
		}
	}
	sort(e+1,e+m+1);
	for(int i=1;i<=m;++i){
		int fx=find(e[i].u);
		int fy=find(e[i].v);
		if(fx!=fy) fa[fx]=fy;
		if(find(n+1)==find(n+2)){
			printf("%.10Lf\n",sqrt(1.0L*e[i].w)/2.0L);return 0;
		}
	}
}
#include <bits/stdc++.h>
#define int long long
using namespace std;

int n;double eps=1e-6,ans;
int fath[105];

struct node
{
	int x,y;
}a[105];

double dis(double a1,double b1,double c1,double d1)
{
	return sqrt((c1-a1)*(c1-a1)+(b1-d1)*(b1-d1));
}

int fin(int x)
{
	if (x==fath[x])  return x;
	else return fath[x]=fin(fath[x]);
}

bool check(double mid)
{
	for (int i=1;i<=n+2;i++)  fath[i]=i;
	for (int i=1;i<=n-1;i++)
	{
		for (int j=i+1;j<=n;j++)
		{
			if (dis(a[i].x,a[i].y,a[j].x,a[j].y)<mid)
			  fath[fin(j)]=fin(i);
		}
	}
	for (int i=1;i<=n;i++)
	{
		if (abs(a[i].y-100)<mid)  fath[fin(i)]=fin(n+1);
	}
	for (int i=1;i<=n;i++)
	{
		if (abs(a[i].y+100)<mid)  fath[fin(i)]=fin(n+2);
	}
	for (int i=1;i<=n+2;i++)  fath[i]=fin(fath[i]);
	if (fin(n+1)==fin(n+2))  return false;
	else return true;
}

signed main()
{
	cin>>n;
	for (int i=1;i<=n;i++)  cin>>a[i].x>>a[i].y;
	
	double l=0.00,r=200.00;
	while (l+eps<=r)
	{
		double mid=(l+r)/2.00;
		if (check(2.00*mid))  l=mid+eps,ans=mid;
		else r=mid-eps;
	}
	cout<<fixed<<setprecision(4)<<ans<<endl;
	
	return 0;
}