#include<stdio.h>
#include<vector>
#include<math.h>
using namespace std;
int n, X[50], Y[50], R[50];
long long cover(double x, double y, double r)
{
    long long S = 0;
    for( int i = 0 ; i < n ; i++ )
    {
        if(R[i] <= r)
        {
            double dx = x - X[i], dy = y - Y[i], dr = r - R[i];
            if( dx*dx + dy*dy <= dr*dr )
            {
                S |= 1LL << i;
            }
        }
    }
    return S;
}
bool C(double r)
{
    vector<long long> cand;
    cand.push_back(0);

    for( int i = 0 ; i < n ; i++)
    {
        for( int j = 0 ; j < i ; j++)
        {
            if(R[i] <r && R[j] < r )
            {
                double x1 = X[i], y1= Y[i], r1 = r-R[i];
                double x2 = X[j], y2= Y[j], r2 = r-R[j];
                double dx = x2-x1, dy=y2-y1;
                double a = dx*dx+dy*dy;
                double b = ((r1*r1-r2*r2)/a+1)/2;
                double d = r1*r1/a-b*b;
                if( d >= 0 )
                {
                    d = sqrt(d);
                    double x3 = x1+dx*b;
                    double y3 = y1+dy*b;
                    double x4 = -dy*d;
                    double y4 = dx*d;
                    long long ij = 1LL<<i | 1LL<<j;
                    cand.push_back(cover(x3-x4, y3-y4,r)|ij);
                    cand.push_back(cover(x3+x4, y3+y4,r)|ij);
                }
            }
        }
    }
    for( int i = 0 ; i < n ; i++ )
    {
        if(R[i]<=r)
        {
            cand.push_back(cover(X[i],Y[i],r) | 1LL<<i);
        }
    }
    for( int i = 0 ; i < cand.size() ; i++ )
    {
        for( int j = 0 ; j < i ; j++)
        {
            if((cand[i] | cand[j]) == (1LL << n ) - 1 )
            {
                return true;
            }
        }
    }
    return false;
 }
main()
{
	char fin[100], fout[100];
	for(int c = 1 ; c <= 20 ; c++ )
	{
        sprintf(fin,".%d.in",c);
		sprintf(fout,".%d.out",c);
		freopen(fin,"r",stdin);
		freopen(fout,"w",stdout);

        int i;
        scanf("%d",&n);
		for( i = 0 ; i < n ; i++)
            scanf("%d%d%d",&X[i],&Y[i],&R[i]);
        double lb = 0, ub = 10000;
        for( i = 0 ; i < 100 ; i++ )
        {
            double mid = (lb+ub)/2;
            if( C(mid) ) ub = mid;
            else lb = mid;
        }
        printf("%.6lf", ub);
	}
}
