#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long> > seg;
int h, q, lev, ok;
long long ans, range, maxl, maxr, l, r;
long long one = 1;
int main() {
  scanf("%d %d", &h, &q);
  maxl = (one << h) / 2;
  maxr = (one << h) - 1;
  for (int i = 0; i < q; ++i) {
    scanf("%d %I64d %I64d %d", &lev, &l, &r, &ok);
    l = l * (one << (h - lev));
    r = (r + 1) * (one << (h - lev)) - 1;
    if (ok == 1) {
      maxl = max(maxl, l);
      maxr = min(maxr, r);
    } else
      seg.push_back(make_pair(l, r));
  }
  seg.push_back(make_pair(1, maxl - 1));
  seg.push_back(make_pair(maxr + 1, (one << h)));
  sort(seg.begin(), seg.end());
  maxr = (1 << h) / 2 - 1;
  for (int i = 0; i < seg.size(); ++i) {
    if (seg[i].first > maxr + 1) {
      ans = seg[i].first - 1;
      range += seg[i].first - maxr - 1;
    }
    maxr = max(maxr, seg[i].second);
  }
  if (range == 0)
    printf("Game cheated!");
  else if (range > 1)
    printf("Data not sufficient!");
  else
    printf("%I64d", ans);
  return 0;
}
