/* Ivan Nicolae - Bucuresti */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NMAX 1050
int i,j,n,m,H[NMAX],L[NMAX],ST[NMAX],DR[NMAX],PART;
void Sub(int A[], int B[])
{
int i;
for (i=1;i<=B[0];i++)
A[B[i]]=0;
}
void Sec(int A[], int B[])
{
int i,ALA[NMAX],C[NMAX];
memset(ALA,0,sizeof(ALA));
for (i=1;i<=B[0];i++)
ALA[B[i]]=1;
memset(C,0,sizeof(C));
for (i=1;i<=n;i++)
if (A[i] && ALA[i])
C[i]=1;
memcpy(A,C,sizeof(C));
}
int main()
{
freopen("balanta.in","r",stdin);
freopen("balanta.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%d",&DR[0]);
ST[0]=DR[0];
for (j=1;j<=ST[0];j++)
{
scanf("%d",&ST[j]);
H[ST[j]]=1;
L[ST[j]]=1;
}
for (j=1;j<=DR[0];j++)
{
scanf("%d",&DR[j]);
H[DR[j]]=1;
L[DR[j]]=1;
}
scanf("%d",&PART);
}
fseek(stdin,0,SEEK_SET);
memset(ST,0,sizeof(ST));
memset(DR,0,sizeof(DR));
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
memset(ST,0,sizeof(ST));
memset(DR,0,sizeof(DR));
scanf("%d",&DR[0]);
ST[0]=DR[0];
for (j=1;j<=ST[0];j++)
scanf("%d",&ST[j]);
for (j=1;j<=DR[0];j++)
scanf("%d",&DR[j]);
scanf("%d",&PART);
if (PART == 0)
{
Sub(H,ST);
Sub(H,DR);
Sub(L,ST);
Sub(L,DR);
}
else
if (PART == 1)
{
Sec(H,ST);
Sec(L,DR);
}
else
if (PART == 2)
{
Sec(H,DR);
Sec(L,ST);
}
}
int Lh=0,Ll=0,Care;
for (i=1;i<=n;i++)
if (H[i])
{
Lh++;
Care=i;
}
for (i=1;i<=n;i++)
if (L[i])
{
Ll++;
Care=i;
}
if (Lh==1 && Ll==0)
printf("%d",Care);
else
if (Ll==1 && Lh==0)
printf("%d",Care);
else
printf("0");
fclose(stdin);
fclose(stdout);
return 0;
}