#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
int tree[10000], sum[10000], flag[10000], estate[10000], area[10000], minindex[10000];
double avgarea[10000];
vector<int> v;
int findroot(int root)
{
if(tree[root] == -1)
{
return root;
}
else
{
tree[root] = findroot(tree[root]);
return tree[root];
}
}
void init(int id)
{
tree[id] = -1;
sum[id] = 1;
flag[id] = 1;
v.push_back(id);
}
void buildrelation(int index[2])
{
if(index[1] == -1)
{
return;
}
int i;
for(i = 0; i <= 1; i++)
{
if(flag[index[i]] == 0)
{
init(index[i]);
}
else
{
index[i] = findroot(index[i]);
}
}
if(index[0] == index[1])
{
return;
}
int index0 = index[0], index1 = index[1];
if(sum[index1] > sum[index0])
{
index0 = index[1];
index1 = index[0];
}
tree[index1] = index0;
sum[index0] += sum[index1];
estate[index0] += estate[index1];
area[index0] += area[index1];
}
int cmp(int a, int b)
{
if(avgarea[a] != avgarea[b])
{
return avgarea[a] > avgarea[b];
}
return minindex[a] < minindex[b];
}
int main()
{
int n;
scanf("%d", &n);
int id, father, mother, k, i, j, child, curestate, curarea, index[2];
for(i = 1; i <= n; i++)
{
scanf("%d%d%d%d", &id, &father, &mother, &k);
index[0] = id;
index[1] = father;
buildrelation(index);
index[1] = mother;
buildrelation(index);
for(j = 1; j <= k; j++)
{
scanf("%d", &child);
index[1] = child;
buildrelation(index);
}
scanf("%d%d", &curestate, &curarea);
if(flag[id] == 0)
{
init(id);
}
id = findroot(id);
estate[id] += curestate;
area[id] += curarea;
}
memset(minindex, -1, sizeof(minindex));
int size = v.size(), curindex, root;
vector<int> res;
for(i = 0; i < size; i++)
{
curindex = v[i];
root = findroot(curindex);
if(minindex[root] == -1 || curindex < minindex[root])
{
minindex[root] = curindex;
}
if(curindex == root)
{
avgarea[root] = area[root] * 1.0 / sum[root];
res.push_back(root);
}
}
size = res.size();
printf("%d\n", size);
sort(res.begin(), res.end(), cmp);
for(i = 0; i < size; i++)
{
root = res[i];
printf("%04d %d %.3lf %.3lf\n", minindex[root], sum[root], estate[root] * 1.0 / sum[root], avgarea[root]);
}
system("pause");
return 0;
}