#include<vector>
using namespace std;
typedef vector<pair<int,int> >::iterator it;
#define MaxN 110000
#define ld long double
#define ll long double
int N;
ld Suma = 0;
int Fii[MaxN],viz[MaxN];
ll Suma = 0;
int T[MaxN],Fii[MaxN],viz[MaxN];
vector<pair<int,int> > A[MaxN];
inline void parcurgere(int nod)
inline void DF(int nod)
{
viz[nod] = 1;
Fii[nod] = 1;
for(it i=A[nod].begin();i<A[nod].end();i++)
if(!viz[i->first])
for(int i=0;i<A[nod].size();i++)
if(!viz[A[nod][i].first])
{
parcurgere(i->first);
Fii[nod] += Fii[i->first];
DF(A[nod][i].first);
T[A[nod][i].first] = nod;
Fii[nod] += Fii[A[nod][i].first];
Suma += (ld)(i->second)*Fii[i->first]*(N-Fii[i->first]);
Suma += (ll)(A[nod][i].second)*Fii[A[nod][i].first]*(N-Fii[A[nod][i].first]);
}
}
int main()
{
int T;
cin >> T;
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
citire();
parcurgere(0);
DF(0);
cout << Suma/((ld)N*(N-1)/2) << "\n";
printf("%lf\n",(double)(Suma/((ll)N*(N-1)/2)));
sterge();
}
}