#include <iostream>
using namespace std;
const int MAX = 1005;
int main()
{
int n,m;
int i,p;
int sum,total,num;
int k[MAX]; //k[]保存读入的数据
int equal[MAX]; //equal[]记录等式出现的值
int t[MAX]; //t[]记录不等式出现的值
char s;
cin >> n >> m;
memset(equal,0,(n+1)*sizeof(equal[0]));
memset(t,0,(n+1)*sizeof(t[0]));
total=0;
while(m--)
{
cin >> p;
for(i=1;i<=p*2;++i)
cin >> k[i];
cin.get(s);
cin.get(s);
if(s=='=')
{
for(i=1;i<=p*2;i++)
equal[k[i]]=1;
}
else if(s=='>')
{
total++;
for(i=1;i<=p;i++)
t[k[i]]++;
for(i=p+1;i<=2*p;i++)
t[k[i]]--;
}
else if(s=='<')
{
total++;
for(i=1;i<=p;++i)
t[k[i]]--;
for(i=p+1;i<=2*p;++i)
t[k[i]]++;
}
}
sum=0;
for(i=1;i<=n;i++)//假币在每个不等式中都应该出现
{
if(equal[i]==1)
continue;
if(t[i]==total||t[i]==-total)//找出每次都出现的假币
{
num=i;
sum++;
}
}
if(sum==1)
cout << num << endl;
else
cout << 0 << endl;
return 0;
}