#include <stdio.h>
#include <stdlib.h>
int greu[1025], usor[1025], temp1[1025], temp2[1025];
int main(){
int n, m;
FILE*fi,*fo;
fi=fopen("balanta.in","r");
fo=fopen("balanta.out","w");
fscanf(fi,"%d%d", &n, &m);
for(int j=1;j<=1024;j++)
greu[j]=usor[j]=1;
for(int i=0;i<m;i++){
int k;
fscanf(fi,"%d", &k);
for(int j=0;j<k;j++){
int x;
fscanf(fi,"%d", &x);
temp1[x]=1;
}
for(int j=0;j<k;j++){
int x;
fscanf(fi,"%d", &x);
temp2[x]=1;
}
int res;
fscanf(fi,"%d", &res);
if(res==1)
for(int j=1;j<=1024;j++){
greu[j]=greu[j]&temp1[j];
usor[j]=usor[j]&temp2[j];
}
else if(res==2)
for(int j=1;j<=1024;j++){
greu[j]=greu[j]&temp2[j];
usor[j]=usor[j]&temp1[j];
}
else
for(int j=1;j<=1024;j++)
if(temp1[j]==1 || temp2[j]==1)
greu[j]=usor[j]=0;
for(int j=1;j<=1024;j++)
temp1[j]=temp2[j]=0;
}
int rez, num=0;
for(int j=1;j<=1024;j++){
if(greu[j]==1){
rez=j;
num++;
}
if(usor[j]==1){
rez=j;
num++;
}
}
if(num==1)
fprintf(fo,"%d", rez);
else
fprintf(fo,"0");
fclose(fi);
fclose(fo);
return 0;
}