
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <queue>
#define REP(i, n) for(int i = 0; i < (int)(n); ++i)
using namespace std;
typedef long long ll;

double xs[200000+10];
double ys[200000+10];

bool g[105][105];
int visited[105];
int counter;

int main(void) {
  int n;
  scanf("%d", &n);
  REP(i, n) {
    scanf("%lf%lf", &xs[i], &ys[i]);
  }
  int start = n;
  int goal = n+1;
  double left = 0;
  double right = 100;
  REP(iTry, 100) {
    double mid = (left + right) / 2;
    REP(i, n) {
      g[i][i] = true;
      g[i][start] = g[start][i] = (ys[i] + 100) <= 2*mid;
      g[i][goal] = g[goal][i] = (100 - ys[i]) <= 2*mid;
      REP(j, i) {
        g[i][j] = g[j][i] = sqrt((xs[i]-xs[j])*(xs[i]-xs[j]) + (ys[i]-ys[j])*(ys[i]-ys[j])) <= 2*mid;
      }
    }
    ++counter;
    queue<int> q;
    q.push(start);
    visited[start] = counter;
    while(!q.empty()){
      int cur = q.front(); q.pop();
      REP(i, n+2) {
        if(g[cur][i] && visited[i] != counter) {
          q.push(i);
          visited[i] = counter;
        }
      }
    }
    if(visited[goal] == counter) {
      right = mid;
    } else {
      left = mid;
    }
  }
  printf("%.10f\n", left);
  
  return 0;
}

#include <bits/stdc++.h>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define ll long long
//#define file
using namespace std;

int n,m,i,j,k,l,x,y,z;
int fa[100001];
int a[200001][3],ls[100001],len;
int ans[100001];

void New(int x,int y,int z) {++len;a[len][0]=y;a[len][1]=ls[x];ls[x]=len;a[len][2]=z;}

int gf(int t) {if (fa[t]==t) return fa[t];fa[t]=gf(fa[t]);return fa[t];}
void dfs(int Fa,int t,int s,int Ls)
{
	int i;
	if (t==1) ans[t]=1;
	else
	{
		if (s==Ls)
		{
			if (s==1) ans[t]=2;
			else ans[t]=1;
		}
		else ans[t]=Ls;
	}
	
	for (i=ls[t]; i; i=a[i][1])
	if (a[i][0]!=Fa)
	dfs(t,a[i][0],ans[t],a[i][2]);
}

int main()
{
	#ifdef file
	freopen("c.in","r",stdin);
	#endif
	
	scanf("%d%d",&n,&m);
	fo(i,1,n) fa[i]=i;
	fo(i,1,m)
	{
		scanf("%d%d%d",&x,&y,&z);
		if (gf(x)!=gf(y))
		{
			fa[fa[x]]=fa[y];
			New(x,y,z),New(y,x,z);
		}
	}
	
	dfs(0,1,-1,0);
	fo(i,1,n) cout<<ans[i]<<endl;
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}