#include <bits/stdc++.h>
using namespace std;
int n, m;
long long f[80][80];
int l[110], r[110], ty[110];
char s[10];
bool check(int t1, int t2, int ll, int rr) {
  for (int i = 1; i <= m; i++) {
    if (((l[i] == t1 && r[i] == t2) || (l[i] == t2 && r[i] == t1)) &&
        (ty[i] == 0 || ty[i] == 4))
      return false;
    if ((l[i] == t1 || l[i] == t2) && r[i] >= ll && r[i] <= rr && ty[i] >= 2)
      return false;
    if ((r[i] == t1 || r[i] == t2) && l[i] >= ll && l[i] <= rr && ty[i] <= 2)
      return false;
  }
  return true;
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d %s %d", &l[i], s, &r[i]);
    if (s[0] == '<')
      if (s[1] != '=')
        ty[i] = 0;
      else
        ty[i] = 1;
    else if (s[0] == '=')
      ty[i] = 2;
    else if (s[1] == '=')
      ty[i] = 3;
    else
      ty[i] = 4;
  }
  for (int k = 2; k <= 2 * n; k += 2)
    for (int i = 1; i <= 2 * n - k + 1; i++) {
      int j = i + k - 1;
      if (k == 2) {
        if (check(i, j, 0, 0)) f[i][j] = 1;
      } else {
        if (check(i, i + 1, i + 2, j)) f[i][j] += f[i + 2][j];
        if (check(i, j, i + 1, j - 1)) f[i][j] += f[i + 1][j - 1];
        if (check(j - 1, j, i, j - 2)) f[i][j] += f[i][j - 2];
      }
    }
  printf("%lld", f[1][2 * n]);
}
