#include <fstream>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int G[1025],U[1025],A[1025],B[1025],i,j,n,m,l,k;
void exclude( int A[], int B[], int n )
{
int i;
for( i = 1 ; i <= n ; i++ )
{
if( A[ B[ i ] ] == 1 )
A[ B[ i ] ] = 0;
}
}
void intersect( int A[], int B[], int n, int m )
{
int i;
for( i = 1 ; i <= m ; i++ )
if( A[ B[ i ] ] == 1 )
A[ B[ i ] ] = 2;
for( i = 1 ; i <= n ; i++ )
if( A[ i ] )
A[ i ]--;
}
int siz( int A[], int n )
{
int i,ans = 0;
for( i = 1 ; i <= n ; i++ )
if( A[ i ] == 1 )
ans++;
return ans;
}
int main()
{
fin>>n>>k;
for( i = 1 ; i <= n ; i++ )
G[ i ] = U[ i ] = 1;
for( i = 1 ; i <= k ; i++ )
{
fin>>m;
for( j = 1 ; j <= m ; j++ )
fin>>A[ j ];
for( j = 1 ; j <= m ; j++ )
fin>>B[ j ];
fin>>l;
if( l == 0 )
{
exclude( G , A , m );
exclude( G , B , m );
exclude( U , A , m );
exclude( U , B , m );
}
else if( l == 1 )
{
intersect( G , A , n , m );
intersect( U , B , n , m );
}
else
{
intersect( G , B , n , m );
intersect( U , A , n , m );
}
}
if( siz( G , n ) == 0 && siz( U , n ) == 1 )
{
for( i = 1 ; i <= n ; i++ )
if( U[ i ] == 1 )
fout<<i;
}
else if( siz( G , n ) == 1 && siz( U , n ) == 0 )
{
for( i = 1 ; i <= n ; i++ )
if( G[ i ] == 1 )
fout<<i;
}
else
fout<<0;
return 0;
}