#include #define ls ch[x][0] #define rs ch[x][1] #define ll long long using namespace std; inline ll read(){ ll num=0,neg=1;char c=getchar(); while(!isdigit(c)){if(c=='-')neg=-1;c=getchar();} while(isdigit(c)){num=(num<<3)+(num<<1)+c-'0';c=getchar();} return num*neg; } int to[4000010],nxt[4000010],head[5000],cnt; int T,n,len[20010],t[20010][110],p[20010][110]; bool used[4000010]; inline void insert(int x,int y){to[++cnt]=y,nxt[cnt]=head[x],head[x]=cnt;} inline void bfs(){ queueline;memset(used,0,sizeof(used)); line.push((t[1][1]-1)*10+p[1][1]-1); used[(t[1][1]-1)*10+p[1][1]-1]=1; while(!line.empty()) { int u=line.front();line.pop(); for(int i=head[u];i;i=nxt[i]){ int v=to[i];if(used[v])continue; used[v]=1;line.push(v); } }return; } int main(){ T=read(); while(T--) { n=read();cnt=0;memset(head,0,sizeof(head)); for(int i=1;i<=n;i++){ len[i]=read(); for(int j=1;j<=len[i];j++){ t[i][j]=read(),p[i][j]=read(); if(i) insert((t[i][j-1]-1)*10+p[i][j-1]-1,(t[i][j]-1)*10+p[i][j]-1); } } bfs(); for(int i=1;i<=n;i++){ for(int j=1;j<=len[i];j++){ if(used[(t[i][j]-1)*10+p[i][j]-1]){ if(i>1) printf(" "); printf("%d",i); break; } } }printf("\n"); }return 0; }