#include <bits/stdc++.h>
using namespace std;
const int maxn = 70 + 5;
long long p_num[maxn * maxn];
int signs[maxn][maxn];
int n, k;
void solve() {
  for (int i = 1; i < 2 * n; i++) {
    if (signs[i][i + 1] == 0 || signs[i][i + 1] == 1 || signs[i][i + 1] == 4 ||
        signs[i][i + 1] == 5) {
      p_num[i] = 1;
    } else {
      p_num[i] = 0;
    }
  }
  for (int k = 1; k < n; k++) {
    for (int i = 1; i <= 2 * n - 2 * k + 1; i++) {
      int f_1 = i, f_2 = i + 1;
      int b_1 = i + k * 2, b_2 = b_1 + 1;
      bool flag = true;
      long long cnt = 0;
      flag = true;
      if (signs[b_1][b_2] == 2 || signs[b_1][b_2] == 3) flag = false;
      for (int j = i; j < i + 2 * k; j++) {
        if ((signs[j][b_1] == 0 || signs[j][b_1] == 3 || signs[j][b_1] == 5) &&
            (signs[j][b_2] == 0 || signs[j][b_2] == 3 || signs[j][b_2] == 5)) {
          continue;
        } else {
          flag = false;
        }
      }
      if (flag) {
        cnt += p_num[(k - 1) * 2 * n + i];
      }
      flag = true;
      if (signs[f_1][b_2] == 2 || signs[f_1][b_2] == 3) flag = false;
      for (int j = i + 1; j < i + 1 + 2 * k; j++) {
        if ((signs[f_1][j] == 0 || signs[f_1][j] == 2 || signs[f_1][j] == 4) &&
            (signs[j][b_2] == 0 || signs[j][b_2] == 3 || signs[j][b_2] == 5)) {
          continue;
        } else {
          flag = false;
        }
      }
      if (flag) {
        cnt += p_num[(k - 1) * 2 * n + i + 1];
      }
      flag = true;
      if (signs[f_1][f_2] == 2 || signs[f_1][f_2] == 3) flag = false;
      for (int j = i + 2; j < i + 2 + 2 * k; j++) {
        if ((signs[f_1][j] == 0 || signs[f_1][j] == 2 || signs[f_1][j] == 4) &&
            (signs[f_2][j] == 0 || signs[f_2][j] == 2 || signs[f_2][j] == 4)) {
          continue;
        } else {
          flag = false;
        }
      }
      if (flag) {
        cnt += p_num[(k - 1) * 2 * n + i + 2];
      }
      p_num[k * 2 * n + i] = cnt;
    }
  }
  printf("%I64d\n", p_num[(n - 1) * 2 * n + 1]);
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < k; i++) {
    string sign;
    int x, y;
    cin >> x >> sign >> y;
    if (sign == "=") {
      signs[x][y] = 1;
      signs[y][x] = 1;
    }
    if (sign == "<") {
      signs[x][y] = 2;
      signs[y][x] = 3;
    }
    if (sign == ">") {
      signs[x][y] = 3;
      signs[y][x] = 2;
    }
    if (sign == "<=") {
      signs[x][y] = 4;
      signs[y][x] = 5;
    }
    if (sign == ">=") {
      signs[x][y] = 5;
      signs[y][x] = 4;
    }
  }
  solve();
  return 0;
}
