#include<bits/stdc++.h>
#define inf 1<<29
using namespace std;

int n,m,K,a,b;
string s,ans="Yes";
int skill[101][101][2];
vector<int> v[101];
bool checked[101]={},visited[101]={};

void init(){
  for(int i=0;i<101;i++){
    for(int j=0;j<101;j++){
      skill[i][j][0]=-1;
      skill[i][j][1]=inf;
    }
  }
}

void dfs(int num){
  if(visited[num]){
    ans="No";
    return;
  }
  visited[num]=true;
  for(int i=0;i<v[num].size();i++){
    if(!checked[v[num][i]])dfs(v[num][i]);
  }
  checked[num]=true;
  visited[num]=false;
}

int main()
{
  init();
  cin>>m>>n;
  for(int i=0;i<m;i++){
    cin>>K;
    for(int j=0;j<K;j++){
      cin>>a>>s>>b;
      a--;
      if(s[0]=='>')skill[i][a][0]=max(b,skill[i][a][0]);
      else skill[i][a][1]=min(b,skill[i][a][1]);
    }
  }
  for(int i=0;i<m;i++){
    for(int j=0;j<m;j++){
      for(int k=0;k<n;k++){
	if(skill[i][k][1]==inf || skill[j][k][0]==-1)continue;
	if(skill[i][k][1]<skill[j][k][0]){
	  v[i].push_back(j);
	  break;
	}
      }
    }
  }
  for(int i=0;i<m;i++){
    if(!checked[i])dfs(i);
  }
  cout<<ans<<endl;
  return 0;
}