/*
                ____________    ______________       __
               / _________  /\ /_____   _____/\     / /\
              / /\       / /  \\    /  /\    \ \   / /  \
             / /  \_____/ /   / \__/  /  \____\/  / /   /
            / /   /    / /   /    /  /   /       / /   /
           / /   /    / /   /    /  /   /       / /   /
          / /   /    / /   /    /  /   /       / /   /
         / /___/____/ /   /    /  /   /       / /___/________
        /____________/   /    /__/   /       /______________/\
        \            \  /     \  \  /        \              \ \
         \____________\/       \__\/          \______________\/
           ___       ___               ___    __________
          /  /\     /  /\             /  /\  /_______  /\
         /  /__\___/  /  \           /  /  \ \      /  /  \
        /____    ____/   /          /  /   /  \____/  /   /
        \   /   /\   \  /          /  /   /       /  /   /
         \_/   /  \___\/ ___      /  /   /       /  /   /
          /   /   /     /  /\    /  /   /       /  /   /
         /   /   /     /  /__\__/  /   /       /  /___/____
        /___/   /     /___________/   /       /___________/\
        \   \  /      \           \  /        \           \ \
         \___\/        \___________\/          \___________\/

          A FAN OF FIZZYDAVID

*/

#include<bits/stdc++.h>

#define HEAP priority_queue
#define rep(i,n) for(int i=0;i<(n);i++)
#define per(i,n) for(int i=(n)-1;i>=0;i--)
#define forn(i,l,r) for(int i=(l);i<=(r);i++)
#define nrof(i,r,l) for(int i=(r);i>=(l);i--)
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define X first
#define Y second
#define eps 1e-20
#define pi 3.1415926535897932384626433832795
#define orz int
#define yjz main
#define fizzydavid return
#define ak 0
#define la ;
#define SZ(x) (int)x.size()
#define ALL(x) x.begin(),x.end()
#define FILL(a,b) memset((a),(b),sizeof((a)))

using namespace std;

typedef long long LL;
typedef double flt;
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<LL> vl;
typedef pair<int,LL> pil;
typedef pair<LL,int> pli;
typedef pair<LL,LL> pll;
typedef vector<pil> vil;
typedef vector<pii> vii;

const int iinf=1e9+7;
const LL linf=1ll<<60;
const flt dinf=1e10;

template <typename T>
inline void scf(T &x)
{
	bool f=0; x=0; char c=getchar();
	while((c<'0' || c>'9') && c!='-') c=getchar();
	if(c=='-') { f=1; c=getchar(); }
	while(c>='0' && c<='9') { x=x*10+c-'0'; c=getchar(); }
	if(f) x=-x; return;
}

template <typename T1,typename T2>
void scf(T1 &x,T2 &y) { scf(x); return scf(y); }

template <typename T1,typename T2,typename T3>
void scf(T1 &x,T2 &y,T3 &z) { scf(x); scf(y); return scf(z); }

template <typename T1,typename T2,typename T3,typename T4>
void scf(T1 &x,T2 &y,T3 &z,T4 &w) { scf(x); scf(y); scf(z); return scf(w); }

#ifdef ONLINE_JUDGE
#define debug(x) ;
#else
#define DEBUGg
#define debug(x) cerr<<#x<<"="<<x<<endl;
#endif

//---------------------------head----------------------------

const int N=20;

int n,m;
int x[N],y[N];
int u[N*N],v[N*N];
int water[N];
flt e[N*N];
flt dp[1<<N];
int par[N];
vi all;
int id[N*N];

inline int find(int u){ return par[u]==u?u:par[u]=find(par[u]); }

flt solve()
{
    flt tot=0.0;
    for(auto i:all) par[i]=i, tot+=1.0*water[i];
    rep(i,m) id[i]=i;
    sort(id,id+m,[](const int &x,const int &y)
         {
             return e[x]<e[y];
         });

    #ifdef DEBUG
    rep(i,m) cerr<<u[i]<<' '<<v[i]<<' '<<e[i]<<endl;
    #endif // DEBUG

    rep(ii,m)
    {
        int i=id[ii];
        u[i]=find(u[i]);
        v[i]=find(v[i]);
        if(u[i]!=v[i])
        {
            tot-=1.0*e[i];
            par[u[i]]=v[i];
        }
    }

    return tot/(1.0*SZ(all));
}

orz yjz()
{
    scf(n);
    forn(i,1,n)
    {
        scf(x[i],y[i],water[i]);
    }
    rep(msk,1<<n)
    {
        all.clear();
        forn(i,1,n)
        {
            if(msk & (1<<i-1)) all.pb(i);
        }

        m=0;
        rep(i,SZ(all)) rep(j,i)
        {
            u[m]=all[i]; v[m]=all[j];
            e[m++]=hypot(1.0*(x[all[i]]-x[all[j]]),1.0*(y[all[i]]-y[all[j]]));
        }

        #ifdef DEBUG
        cerr<<msk<<endl;
        #endif // DEBUG

        dp[msk]=solve();
        for(int mask=msk;mask;mask=(mask-1&msk))
        {
            dp[msk]=max(dp[msk],min(dp[mask],dp[msk^mask]));
        }
    }

    printf("%.12f\n",dp[(1<<n)-1]);
	fizzydavid ak la
}
