#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;int n;bool map[110][110];int ans[110];int dfs(int i){ if(ans[i]) return ans[i]; int Max=0; for(int j=1;j<=n;j++) if(map[i][j]) Max=max(Max,dfs(j)+1); ans[i]=Max; return Max;}int main(){ while(scanf("%d",&n),n) { memset(map,0,sizeof(map)); memset(ans,0,sizeof(ans)); for(int i=1;i<=n;i++) { int t;scanf("%d",&t); for(int j=0;j<t;j++) { int a; scanf("%d",&a); map[i][a]=1; } map[0][i]=1; } dfs(0); int ans_=1; for(int i=2;i<=n;i++) { if(ans[i]>ans[ans_]) ans_=i; } printf("%d\n",ans_); } return 0;}