
/*
TASK: cars
LANG: C
*/

#include<stdio.h>

int k,n,m,i,j,t,h,o,st,en;
int a[2][5000000]={0};
int ch[500000]={0},queue[500000],sum[500000];

int main () {
	freopen("test.txt","rt",stdin);
    freopen("test1.txt","wt",stdout);
	scanf("%d",&k);
    n=k;
    for (i=0;i<k;i++){
        scanf("%d",&t);
        h=i;
        if (!t) en=i;
        else {scanf("%d",&a[0][i]);a[0][i]--;a[1][i]=-1;ch[a[0][i]]++;}
        for (j=1;j<t;j++) {
            a[1][h]=n;
            scanf("%d",&a[0][n]);
            a[0][n]--;
            a[1][n]=-1;
            ch[a[0][n]]++;
            h=n++;
            }
        }
	for (i=0;i<k;i++)
       	if (!ch[i]) {st=i;break;}
    queue[0]=st;
    m=1;
    sum[st]=1;
	for (i=0;i<m;i++) {
       	j=h=queue[i];
        if (j!=en)
        		do{
          		  o=a[0][j];
          		  sum[o]=(sum[h]+sum[o])%987654321;
          		  ch[o]--;
          		  if (!ch[o]) queue[m++]=o;
          		  j=a[1][j];
          		  }while (j!=-1);
       	}
    printf("%d\n",sum[en]);
    return 0;
}
