#include<stdio.h>
#define NM 1025
typedef int set[NM];
int apartine(int x,set a){
int i;
for(i=1;i<=a[0];++i)
if(a[i]==x) return 1;
return 0;
}
void intersectie(set a,set b,set c){
int i;
c[0]=0;
for(i=1;i<=a[0];++i)
if(apartine(a[i],b)) c[0]++,c[c[0]]=a[i];
}
void copy(set src,set dest){
int i;
for(i=0;i<=src[0];++i) dest[i]=src[i];
}
void dif(set a,set b,set c){
int i;c[0]=0;
for(i=1;i<=a[0];++i)
if(!apartine(a[i],b)) c[0]++,c[c[0]]=a[i];
}
int main(){
freopen("balanta.in","r",stdin);
freopen("balanta.out","w",stdout);
int i,k,s;
int n,m,l=0,h=0,e=0,mu,mg;
mu=mg=0;
scanf("%d%d",&n,&m);
set st,dr,u,g,a;
for(i=1;i<=n;++i) u[i]=g[i]=i;
u[0]=g[0]=n;
while(m--){
scanf("%d",&k);
for(i=1;i<=k;++i) scanf("%d",&st[i]);
for(i=1;i<=k;++i) scanf("%d",&dr[i]);
st[0]=dr[0]=k;
scanf("%d",&s);
if(!s){
dif(u,st,a);copy(a,u);
dif(u,dr,a);copy(a,u);
dif(g,st,a);copy(a,g);
dif(g,dr,a);copy(a,g);
continue;
}
if(s==1){
intersectie(g,st,a);
copy(a,g);
intersectie(u,dr,a);
copy(a,u);
}
else{
intersectie(u,st,a);
copy(a,u);
intersectie(g,dr,a);
copy(a,g);
}
}
l=u[0],h=g[0],mu=u[1],mg=g[1];
if(l==1&&h==0) printf("%d",mu);
else
if(l==0&&h==1) printf("%d",mg);
else printf("0");
return 0;
}