ll n,m,d[800][800],v[800];

void f(ll i){
	v[i]=1;
	rep(j,n){
		if(!v[j]&&d[i][j]<=m){
			f(j);
		}
	}
}


{
	rd(n);
	ll x[n],y[n],t[n];
	rd((x,y,t)(n));
	rep(i,n){
		rep(j,i){
			d[i][j]=d[j][i]=
				t[i]==t[j] ?
				(x[i]-x[j])**2+(y[i]-y[j])**2 :
				x[i]**2+y[i]**2+x[j]**2+y[j]**2-Isqrt(4*(x[i]**2+y[i]**2)*(x[j]**2+y[j]**2));
		}
	}
	ll l=-1,h=33d8;
	while(l+1<h){
		m=l+h>>1;
		rep(i,n){
			v[i]=0;
		}
		f(0);
		if(v[n-1]){
			h=m;
		}else{
			l=m;
		}
	}
	wt(h);
}