#include <bits/stdc++.h>
using namespace std;
const int N = 2E5 + 10;
int h, m, tot = 0;
struct node {
  long long l, r;
} p[N];
inline int cmp(node x, node y) { return x.l < y.l; }
int main() {
  scanf("%d%d", &h, &m);
  long long st = (1ll << (h - 1)), ed = (1ll << h) - 1;
  for (int i = 1; i <= m; i++) {
    long long k, l, r, fl;
    scanf("%lld%lld%lld%lld", &k, &l, &r, &fl);
    l = max(l, (1ll << k - 1));
    r = min(r, (1ll << k) - 1);
    if (!fl)
      p[++tot] =
          (node){l << (h - k), ((l << (h - k)) + ((r - l + 1) << (h - k))) - 1};
    else {
      if (st <= ((l << (h - k)) - 1)) p[++tot] = (node){st, (l << (h - k)) - 1};
      if (((l << (h - k)) + ((r - l + 1) << (h - k))) <= ed)
        p[++tot] = (node){((l << (h - k)) + ((r - l + 1) << (h - k))), ed};
    }
  }
  sort(p + 1, p + 1 + tot, cmp);
  long long fr = st - 1, ans;
  bool is_ans = 0;
  for (int i = 1; i <= tot; i++) {
    if (p[i].l > fr + 1) {
      if (is_ans || p[i].l - fr > 2) {
        puts("Data not sufficient!");
        return 0;
      }
      is_ans = 1;
      ans = fr + 1;
    }
    fr = max(fr, p[i].r);
  }
  if (fr < ed) {
    if (fr + 1 == ed)
      printf("%lld\n", ed);
    else
      puts("Data not sufficient!");
    return 0;
  }
  if (is_ans)
    printf("%lld", ans);
  else
    printf("Game cheated!");
  return 0;
}
