#include <bits/stdc++.h>
using namespace std;
mt19937_64 random_num(
    chrono::high_resolution_clock::now().time_since_epoch().count());
const int MOD = 1000000007;
const int base = 26;
int n, q;
string c[100][100];
bool d[100][100];
long long f[100][100];
vector<int> g[100];
bool check(int x, int y, int l, int r, string sign) {
  if (y < l || y > r) {
    if (r < x && x - 1 == y) return (c[x][y] != ">" && c[x][y] != "<");
    if (l > x && x + 1 == y) return (c[x][y] != ">" && c[x][y] != "<");
    return 1;
  }
  if (l <= y && y <= r) {
    if (sign == "<=" || sign == "<")
      return 1;
    else
      return 0;
  }
}
long long calc(int l, int r) {
  if (l + 1 == r) {
    f[l][r] = (c[l][r] != "<" && c[l][r] != ">");
    d[l][r] = 1;
  }
  if (d[l][r]) return f[l][r];
  d[l][r] = 1;
  bool ok1 = 1, ok2 = 1, ok3 = 1;
  if (c[l][l + 1] == ">" || c[l][l + 1] == ">")
    ok1 = 0;
  else {
    for (int k : g[l])
      if (check(l, k, l + 2, r, c[l][k]) == 0) {
        ok1 = 0;
        break;
      }
    for (int k : g[l + 1])
      if (check(l + 1, k, l + 2, r, c[l + 1][k]) == 0) {
        ok1 = 0;
        break;
      }
  }
  if (c[r - 1][r] == ">" || c[r - 1][r] == ">")
    ok2 = 0;
  else {
    for (int k : g[r])
      if (check(r, k, l, r - 2, c[r][k]) == 0) {
        ok2 = 0;
        break;
      }
    for (int k : g[r - 1])
      if (check(r - 1, k, l, r - 2, c[r - 1][k]) == 0) {
        ok2 = 0;
        break;
      }
  }
  if (c[l][r] == ">" || c[l][r] == "<")
    ok3 = 0;
  else {
    for (int k : g[l])
      if (check(l, k, l + 1, r - 1, c[l][k]) == 0) {
        ok3 = 0;
        break;
      }
    for (int k : g[r])
      if (check(r, k, l + 1, r - 1, c[r][k]) == 0) {
        ok3 = 0;
        break;
      }
  }
  if (ok1) f[l][r] += calc(l + 2, r);
  if (ok2) f[l][r] += calc(l, r - 2);
  if (ok3) f[l][r] += calc(l + 1, r - 1);
  return f[l][r];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> q;
  for (int i = 1; i <= q; i++) {
    int u, v;
    string s;
    cin >> u >> s >> v;
    g[u].push_back(v);
    g[v].push_back(u);
    c[u][v] = s;
    if (s == ">") c[v][u] = "<";
    if (s == ">=") c[v][u] = "<=";
    if (s == "=") c[v][u] = "=";
    if (s == "<") c[v][u] = ">";
    if (s == "<=") c[v][u] = ">=";
  }
  cout << calc(1, 2 * n);
}
