#include<bits/stdc++.h>
#define ll long long
#define F(i,a,b) for(i=(a);i<=(b);i++)
using namespace std;
const ll _=3e5+5,M=998244353;
ll n,m,k,q,x,y,a[_],b[_],c[_],d[_],ei[_],eo[_],i,j;
bool f[_];set<pair<ll,ll>>st;
ll p(ll x){return a[x]==x?x:a[x]=p(a[x]);}
void p2(ll x,ll y){
if(st.count({x,y}))return;else st.insert({x,y});
eo[x]++;ei[y]++;x=p(x);y=p(y);
if(x==y)f[x]=1;else f[x]|=f[y],a[y]=x;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>q>>m>>k;
F(i,1,k)a[i]=i,ei[i]=eo[i]=0;
while(q--)for(cin>>n>>x;--n;x=y)cin>>y,p2(x,y);
F(i,1,k)b[p(i)]++,f[p(i)]|=(ei[i]>1||eo[i]>1);
F(i,1,k)if(a[i]==i&&!f[i])c[b[i]]++;
n=0;F(i,1,k)if(c[i])a[++n]=i,b[n]=c[i];
d[0]=1;F(i,1,m)F(j,1,n)if(a[j]<=i)(d[i]+=d[i-a[j]]*b[j])%=M;
cout<<d[m]<<'\n';
}