#include<stdio.h>
#include<stdlib.h>
#define NM 1025
#define LSIR NM*4
typedef int set[NM];
int apartine(int x,set a){
return a[x];
}
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,x,y;
int n,m,l=0,h=0,mu,mg;
char sir[LSIR],*p;
mu=mg=0;
scanf("%d%d\n",&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--){
fgets(sir,LSIR,stdin); p=sir;
k=atoi(p);
for(i=1;i<=n;++i) st[i]=dr[i]=0;
while(*p!=32) p++;p++;
for(i=1;i<=k;++i){
x=atoi(p);
st[x]=1;
while(*p!=32) p++;p++;
}
for(i=1;i<=k;++i){
y=atoi(p);
dr[y]=1;
while(*p!=32) p++;p++;
}
//st[0]=dr[0]=k;
s=atoi(p);
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;
}