/*
TASK: cars
LANG: C
*/
#include<stdio.h>

#define MAXN 524288
#define MAXM 8388608
#define MOD 987654321

int f[MAXN],p[MAXN],e[MAXN][2],ans[MAXM],q[MAXN];

int main()
{
	int i,j,n,br,mem=0,qb,qe,v,w;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		e[i][0]=mem;
		scanf("%d",&br);
		for(j=0;j<br;j++)
		{
			scanf("%d",&ans[mem]);
			p[ans[mem]]++;
			mem++;
		}
		e[i][1]=mem;
	}
	v=0;
	for(i=1;i<=n;i++) if(p[i]==0) { v=i; break; }
	qb=qe=0;
	q[qe++]=v;
	f[v]=1;
	while(qb<qe)
	{
		v=q[qb++];
		for(j=e[v][0];j<e[v][1];j++)
		{
			w=ans[j];
			f[w]+=f[v];
			f[w]%=MOD;
			p[w]--;
			if(p[w]==0) q[qe++]=w;
		}
	}
	printf("%d\n",f[v]);
	return 0;
}
