#include <iostream>
using namespace std;
int all_in(int x,int left[1000][1000],int right[1000][1000],int n)
{
int flag_l=1;
for(int i=1;i<=n;i++)
{
if(left[i][x]!=1)
{
flag_l=0;
break;
}
}
int flag_r=1;
for(int i=1;i<=n;i++)
{
if(right[i][x]!=1)
{
flag_r=0;
break;
}
}
return flag_l||flag_r;
}
int main() {
int n, k;
cin>>n>>k;
int *a=new int[n+1]{0};
int tmp_left[1000][1000]={0};
int tmp_right[1000][1000]={0};
int sum_equal=0;
for(int i=0;i<k;i++)
{
int c;
cin>>c;
int *lst=new int[2*c];
for(int j=0;j<2*c;j++)cin>>lst[j];
char mark;
cin>>mark;
if(mark=='=')
{
for(int j=0;j<2*c;j++)a[lst[j]]=1;
}
else
{
sum_equal++;
for(int f=0;f<=n;f++)
{
int flag=1;
for(int j=0;j<2*c;j++)
if(f==lst[j])flag=0;
if(flag==1)
{
a[f]=flag;
}
}
if(mark=='>')
{
for(int j=0;j<c;j++)tmp_left[sum_equal][lst[j]]=1;
for(int j=c;j<2*c;j++)tmp_right[sum_equal][lst[j]]=1;
}
else
{
for(int j=0;j<c;j++)tmp_right[sum_equal][lst[j]]=1;
for(int j=c;j<2*c;j++)tmp_left[sum_equal][lst[j]]=1;
}
}
}
a[0]=1;
int t=0;
for(int i=0;i<=n;i++)
{
//cout<<a[i]<<endl;
if(a[i]==0)
{
if(t==0)t=i;
else
{
t=0;
//break;
}
}
}
//cout<<t;
t=0;
for(int i=0;i<=n;i++)
{
if(a[i]==0)
{
if(t==0)t=i;
else
{
t=0;
break;
}
}
}
if(t!=0)cout<<t;
else
{
for(int i=0;i<=n;i++)
{
if(a[i]==0)
{
int g=all_in(i,tmp_left,tmp_right,sum_equal);
if(g==0)a[i]=1;
}
}
t=0;
for(int i=0;i<=n;i++)
{
if(a[i]==0)
{
if(t==0)t=i;
else
{
t=0;
break;
}
}
}
cout<<t;
}
}
// 64 位输出请用 printf("%lld")