#include <iostream>
#include <vector>
using namespace std;

int main(){
  int n;
  while(cin >> n, n){
    vector< vector<int> > V(31);
    int f, d;
    for(int i = 0; i < n; ++i){
      cin >> f;
      for(int j = 0; j < f; ++j){
	cin >> d;
	V[d].push_back(i);
      }
    }
    bool M[n][n];
    for(int i = 0; i < n; ++i){
      fill(M[i],M[i]+n,false);
      M[i][i] = true;
    }
    bool g = false;
    for(int i = 0; i < 31; ++i){
      bool t[n];
      fill(t,t+n,false);
      for(int j = 0; j < (int)V[i].size(); ++j){
	for(int k = 0; k < n; ++k){
	  t[k] |= M[V[i][j]][k];
	}
      }
      g = true;
      for(int j = 0; j < n; ++j)
	g &= t[j];
      if(g){
	cout << i << endl;
	break;
      }else{
	for(int j = 0; j < (int)V[i].size(); ++j){
	  for(int k = 0; k < n; ++k){
	    M[V[i][j]][k] = t[k];
	  }
	}
      }
    }
    if(!g) cout << -1 << endl;
  }
  return 0;
}