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

int main(){
	int n, f, d;
	for( ; cin >> n , n; ){
		bitset<50> b[31];
		bitset<50> has[50];
		for( int i = 0; i < n; ++i ){
			has[i].set( i );
			for( cin >> f; f--; ){
				cin >> d;
				b[d].set( i );
			}
		}

		for( d = 1; d <= 30; ++d ){
			bitset<50> gather;
			for( int i = 0; i < n; ++i ){
				if( b[d][i] ){
					gather |= has[i];
				}
			}
			for( int i = 0; i < n; ++i ){
				if( b[d][i] ){
					has[i] = gather;
				}
			}
			
			if( gather.count() == n ){
				break;
			}
		}
		
		if( d > 30 ){
			d = -1;
		}
		cout << d << endl;
	}
}