#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
int M,N;
int R[111];
bool used[111];
int main(){
  vector<P> L[101];
  vector<P> U[101];
  cin >> M >> N;
  for(int i=0;i<M;i++){
    int K; cin >> K;
    for(int j=0;j<K;j++){
      int s,t; string c;
      cin >> s >> c >> t;
      --s;
      if( c[0] == '<' )
        L[i].push_back( P(s,t) );
      else 
        U[i].push_back( P(s,t) );      
    }    
  }
  
  for(int cnt=0;cnt<M;cnt++){
    int tmp[111];
    for(int i=0;i<M;i++){
      if(used[i]) continue;
      for(int j=0;j<N;j++)
        tmp[j] = R[j];    
      for(int j=0;j<(int)U[i].size();j++)
        tmp[U[i][j].first] = max( tmp[U[i][j].first], U[i][j].second );
      bool ok = true;
      for(int j=0;j<M;j++){
        if( used[j] ) continue;
        for(int k=0;k<(int)L[j].size();k++)
          if( tmp[L[j][k].first] > L[j][k].second ) {
            ok = false; break;
          }
        if( !ok ) break;
      }
      if( ok ){
        used[i] = true;
        for(int j=0;j<N;j++){
          R[j] = tmp[j];
        }
        break;
      }
    }
  }
  for(int i=0;i<M;i++)
    if( !used[i] ) {
      cout << "No" << endl; return 0;
    }
  cout << "Yes" << endl;
}