/*
又是假币判断问题,跟POJ1013类似,不过这个题用1013那个算法WA了...后来换了种枚举的算法才过...
思路就是假币应该在每个不等式中都出现,最后只要看哪个硬币出现的次数和不等式出现的次数相同,
如果这个硬币唯一,那它就是确认的假币。
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 1001
int main()
{
int n, k, p, total = 0;
int i;
int count = 0, pos = 0;
char sign;
/* 记录原始数据 */
int t[MAX] = {0};
/* 标记硬币真假 */
int r[MAX] = {0};
/* 记录硬币重量 */
int w[MAX] = {0};
freopen("1.txt","r",stdin);
scanf("%d%d",&n,&k);
while (k--)
{
/* 读入原始数据 */
scanf("%d",&p);
for (i = 0; i < 2 * p; i++)
{
scanf("%d",&t[i]);
}
getchar();
scanf("%c",&sign);
/* 标记肯定为真的硬币 */
if (sign == '=')
{
for (i = 0; i < 2 * p; i++)
{
r[t[i]] = 1;
}
}
/* 左轻右重 */
else if (sign == '<')
{
total++;
for (i = 0; i < p; i++)
{
w[t[i]]--;
}
for (i = p; i < 2 * p; i++)
{
w[t[i]]++;
}
}
/* 左重右轻 */
else if (sign == '>')
{
total++;
for (i = 0; i < p; i++)
{
w[t[i]]++;
}
for (i = p; i < 2 * p; i++)
{
w[t[i]]--;
}
}
}
/* 假币在不等式中每次都应该出现 */
for (i = 1; i <= n; i++)
{
if (r[i])
{
continue;
}
/* 找出每次都出现的"假币" */
if (w[i] == total || w[i] == - total)
{
count++;
pos = i;
}
}
/* 假币唯一则输出 */
if (count != 1)
{
printf("0\n");
}
else
{
printf("%d\n",pos);
}
return 0;
}