#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
#define endl '\n'
struct node {
ll mp, gp;
ll num_game;
pll mw, gw;
vector<int> oppenent;
node() {
mp = gp = num_game = 0;
mw = gw = make_pair(0, 0);
}
};
void reduction(pll &u) {
auto &[x, y] = u;
ll t = __gcd(x, y);
x /= t, y /= t;
}
pll operator+=(pll &a, const pll &b) {
pll res;
auto [x1, y1] = a;
auto [x2, y2] = b;
res.second = lcm(y1, y2);
res.first = x1 * res.second / y1 + x2 * res.second / y2;
reduction(res);
a = res;
return res;
}
void solve() {
int n, m;
cin >> n >> m;
vector<node> a(n + 1);
int i, j, k;
vector<int> b(m + 1);
for (i = 1; i <= m; i++)
cin >> b[i];
auto check = [](pll u) {
auto [x, y] = u;
if (3 * x <= y)
x = 1, y = 3;
return make_pair(x, y);
};
auto fun_omw = [&](node u) -> pll {
if (!u.oppenent.size())
return make_pair(1, 3);
int f = 0;
pll res;
for (auto idx : u.oppenent) {
if (!f) {
f = 1;
res = check(a[idx].mw);
continue;
}
res += check(a[idx].mw);
}
res.second *= u.oppenent.size();
reduction(res);
return res;
};
auto fun_gw = [&](pll u) {
auto [x, y] = u;
ll t = __gcd(x, y);
x /= t, y /= t;
pll res = make_pair(x, y);
return check(res);
};
auto fun_ogw = [&](node u) -> pll {
if (!u.oppenent.size())
return make_pair(1, 3);
int f = 0;
pll res;
for (auto idx : u.oppenent) {
if (!f) {
f = 1;
res = check(a[idx].gw);
continue;
}
res += check(a[idx].gw);
}
res.second *= u.oppenent.size();
reduction(res);
return res;
};
for (int round = 1; round <= m; round++) {
cout << "Round " << round << endl;
vector<int> vis(n + 1);
for (i = 0; i < b[round]; i++) {
int p1, p2, w1, w2, d;
cin >> p1 >> p2 >> w1 >> w2 >> d;
if (w1 > w2)
a[p1].mp += 3;
if (w1 < w2)
a[p2].mp += 3;
if (w1 == w2)
a[p1].mp++, a[p2].mp++;
a[p1].gp += w1 * 3 + d, a[p2].gp += w2 * 3 + d;
a[p1].oppenent.push_back(p2);
a[p2].oppenent.push_back(p1);
a[p1].num_game += w1 + w2 + d;
a[p2].num_game += w1 + w2 + d;
vis[p1] = vis[p2] = 1;
}
for (i = 1; i <= n; i++) {
if (!vis[i])
a[i].mp += 3, a[i].gp += 6, a[i].num_game += 2;
a[i].mw = make_pair(a[i].mp, round * 3);
a[i].gw = make_pair(a[i].gp, a[i].num_game * 3);
}
for (i = 1; i <= n; i++) {
cout << a[i].mp << ' '; // mp
pll res_omw = fun_omw(a[i]);
cout << res_omw.first << '/' << res_omw.second << ' '; // omw
pll res_gw = fun_gw(a[i].gw);
cout << res_gw.first << '/' << res_gw.second << ' '; // gw
pll res_ogw = fun_ogw(a[i]);
cout << res_ogw.first << '/' << res_ogw.second; // ogw
cout << endl;
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int T;
cin >> T;
while (T--)
solve();
}