#include <fstream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string.h>
using namespace std;
void remove(int k, int x[], int y[])
{
for(int i=1; i<=k; i++)
if(x[y[i]])
x[y[i]] = 0, x[0]--;
}
void intersect(int n, int k, int x[], int y[])
{
int i, aux[2000];
for(i=0; i<=n; i++)
aux[i] = x[i], x[i] = 0;
for(i=1; i<=k; i++)
if(aux[y[i]])
x[y[i]] = y[i], x[0]++;
}
int print(int n, int x[])
{
for(int i=1; i<=n; i++)
if(x[i])
return x[i];
return 0;
}
int main()
{
ifstream f("balanta.in");
ofstream g("balanta.out");
int n, m, k, r, i, j, a[2000], b[2000], h[2000], l[2000];
h[0] = l[0] = 0;
//Read
f>>n>>m;
for(i=1; i<=n; i++)
{
h[i] = i, h[0]++;//multimea monedelor grele
l[i] = i, l[0]++;//multimea mondelor usoare
}
for(i=1; i<=m; i++)
{
f>>k;
for(j=1; j<=k; j++)
f>>a[j]; //talerul stang
for(j=1; j<=k; j++)
f>>b[j]; //talerul drept
f>>r; //starea balantei
//Compute
if(r == 0) //balanta e in echilibru
{
remove(k,h,a); remove(k,h,b);
remove(k,l,a); remove(k,l,b);
}
if(r == 1) //balanta se inclina in stanga
{
intersect(n,k,h,a);
intersect(n,k,l,b);
}
if(r == 2) //balanta se inclina in dreapta
{
intersect(n,k,h,b);
intersect(n,k,l,a);
}
}
//Print
if(h[0]==1 && l[0]==0)
{
g<<print(n,h);
return 0;
}
if(h[0]==0 && l[0]==1)
{
g<<print(n,l);
return 0;
}
g<<0;
}