#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<ll> G[1000005];
struct fen{
ll p=0,q=1;
}d[1000005];
queue <ll> q;
vector<ll> ans;
ll ru[1000005],t[1000005];
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
fen jia(fen x,fen y)
{
fen res;
res.p=x.p*y.q+x.q*y.p;
res.q=x.q*y.q;
ll gd=gcd(res.p,res.q);
res.p=res.p/gd;
res.q=res.q/gd;
return res;
}
int main()
{
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;i++)
{
ll v;
scanf("%lld",&t[i]);
if(t[i]==0)
{
ans.push_back(i);
}
if(i<=m)
{
d[i].p=1;
}
for(ll j=1;j<=t[i];j++)
{
scanf("%lld",&v);
G[i].push_back(v);
ru[v]++;
}
}
for(ll i=1;i<=m;i++)
{
q.push(i);
}
while(!q.empty())
{
ll u=q.front();
q.pop();
d[u].q=d[u].q*t[u];
for(auto v:G[u])
{
d[v]=jia(d[v],d[u]);
ru[v]--;
if(ru[v]==0&&t[v]!=0)
{
q.push(v);
}
}
}
for(auto i:ans)
{
printf("%lld %lld\n",d[i].p,d[i].q);
}
return 0;
}