#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int N; ll X[805],Y[805],T[805]; ll D[808][808]; ll issq(ll V) { return V; if(V<0) return -1; ll a=sqrt(V); if((a-1)*(a-1)>=V) return a-1; if(a*a>=V) return a; if((a+1)*(a+1)>=V) return a+1; return -1; } ll hoge(ll p,ll q) { if(p==q) return 0; ll s=p+q; int i; for(i=40;i>=0;i--) { ll s2=s-(1LL<>N; FOR(i,N) cin>>X[i]>>Y[i]>>T[i]; FOR(y,N) FOR(x,y) { if(T[x]==T[y]) { D[y][x]=issq((X[x]-X[y])*(X[x]-X[y])+(Y[x]-Y[y])*(Y[x]-Y[y])); } else { D[y][x]=hoge(X[x]*X[x]+Y[x]*Y[x],X[y]*X[y]+Y[y]*Y[y]); } D[x][y]=D[y][x]; } FOR(k,N) FOR(x,N) FOR(y,N) D[x][y]=min(D[x][y],max(D[x][k],D[k][y])); cout<