#include <stdio.h>
#include <stdlib.h>
#define MAX 1001
#define OK 1
int tag[MAX]; //將出現了等號的(即真幣)排除 標記為1 遍歷時跳過
int num[MAX]; //記錄下標為i的硬幣在不等式的兩邊出現的次數 
int main ()
{
int coin[MAX]; //訪問時下標的中介
int N, k, pi, count ;
char c;
while ( scanf ("%d%d", &N, &k) != EOF )
{
count = 0; //記錄接下來的 k 次稱量中有多少次出現了不等號
for ( int i = 0; i < k; i ++) // k 次的稱量記錄
{
scanf ("%d", &pi);
for (int j = 0; j < 2 * pi; j ++)
{
scanf ("%d", &coin[j]);
}
getchar ();
c = getchar ();
for (int i = 0; i < 2 * pi; i ++)
{
if (c == '=')
tag[coin[i]] = 1;
else if (c == '<')
{
count ++;
for (int j = 0; j < pi; j ++)
{
num[coin[j]]--;
}
for (int j = pi; j < 2 * pi; j++)
{
num[coin[j]]++;
}
}
else
{
count ++;
for (int j = 0; j < pi; j ++)
{
num[coin[j]]++;
}
for (int j = pi; j < 2 * pi; j++)
{
num[coin[j]]--;
}
}
}
}
int mark = 0;
int temp ;
for (int i = 1; i <= N; i ++)
{
if (tag[i] == 1) //表示為真幣,不可能
continue;
if (num[i] == count || num[i] == -count) //如果硬幣在不等式的兩邊出現的次數等于不等號數為假幣
{
mark ++;
temp = i;
}
}
if (mark == 1) // 假幣只有一個
{
printf ("%d\n", temp);
}
else
printf ("%d\n",0);
}
return 0;
}


