#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N = 1e4 + 5;
int fa[N];
int s, p;
struct Node{
double x, y;
} a[N];
int getfa(int x)
{
if(fa[x] != x) fa[x] = getfa(fa[x]);
return fa[x];
}
void merg(int a, int b)
{
fa[getfa(a)] = getfa(b);
}
bool check(double x)
{
for(int i = 1; i <= p; i ++) fa[i] = i;
int cnt = p;
for(int i = 2; i <= p; i ++)
{
double min_dis = 0x3f3f3f3f;
int min_lct = 0;
for(int j = 1; j < i; j ++)
{
double tmp = sqrtl((a[i].x - a[j].x) * (a[i].x - a[j].x) + (a[i].y - a[j].y) * (a[i].y - a[j].y));
if(min_dis > tmp) min_dis = tmp, min_lct = j;
}
if(min_dis <= x)
{
if(getfa(i) != getfa(min_lct))
{
merg(i, min_lct);
cnt --;
}
}
if(cnt <= s) return true;
}
return false;
}
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
cin >> s >> p;
for(int i=1; i<=p; i++) cin >> a[i].x >> a[i].y;
double l = 0, r = 15000;
while(r - l > 1e-6)
{
double mid = (l + r) / 2;
if(check(mid)) r = mid;
else l = mid;
}
printf("%.2lf", l);
return 0;
}