#include<iostream>
#include<vector>
#include<set>
using namespace std;
int main()
{
  int n,f0,f,day;
  int i,j,k;
  while(cin>>n,n){
    vector< vector<bool> >v(n,vector<bool>(31,false));
    for(i=0;i<n;i++){
      for(cin>>f0;f0-->0;){
	cin>>f;
	v[i][f]=true;
      }
    }

    day=-1;
    vector< vector< set<int> > >dp( n,vector< set<int> >(31) );
    set<int>::iterator it;
    for(i=0;i<n;i++)dp[i][0].insert(i);
    for(j=1;j<31;j++){
      for(i=0;i<n;i++){
	for(k=i;k<n;k++)dp[k][j]=dp[k][j-1];

	if(v[i][j]){
	  for(k=i;k<n;k++){
	    if(v[k][j]){
	      for(it=dp[k][j].begin();it!=dp[k][j].end();it++){
		dp[i][j].insert(*it);
	      }
	    }
	  }
	  for(k=i;k<n;k++){
	    if(v[k][j]){
	      for(it=dp[i][j].begin();it!=dp[i][j].end();it++){
		dp[k][j].insert(*it);
	      }
	    }
	  }
	  if(dp[i][j].size()==n)day=j;
	  break;
	}

	if(day>=0)break;
      }
      if(day>=0)break;
    }

    cout<<day<<endl;
  }
}