#include <bits/stdc++.h>
using namespace std;
bool fair = true;
long long f(long long cur, long long lev, long long h) {
  for (int i = lev; i < h; i++) cur = cur * 2;
  return cur;
}
long long g(long long cur, long long lev, long long h) {
  for (int i = lev; i < h; i++) cur = cur * 2 + 1;
  return cur;
}
vector<pair<long long, long long> > segs;
int main() {
  ios_base::sync_with_stdio(0);
  long long h;
  int q;
  cin >> h;
  cin >> q;
  segs.clear();
  long long one = 1;
  long long mi = f(1, 1, h), ma = g(1, 1, h);
  assert(mi == (one << h) / 2);
  assert(ma == ((one << h) - 1));
  while (q--) {
    long long i, L, R, ans;
    cin >> i >> L >> R >> ans;
    L = f(L, i, h);
    R = g(R, i, h);
    if (ans == 1) {
      mi = max(mi, L);
      ma = min(ma, R);
    } else {
      segs.push_back(make_pair(L, R));
    }
  }
  segs.push_back(make_pair(1, mi - 1));
  long long mnum = one << h;
  segs.push_back(make_pair(ma + 1, mnum));
  long long cnt = 0, ans = -1;
  sort(segs.begin(), segs.end());
  long long num = f(1, 1, h) - 1;
  for (int i = 0; i < segs.size(); i++) {
    long long a = segs[i].first, b = segs[i].second;
    if (a > (num + 1)) {
      cnt += a - num - 1;
      ans = a - 1;
    }
    num = max(b, num);
  }
  if (cnt == 0)
    cout << "Game cheated!";
  else if (cnt == 1)
    cout << ans;
  else
    cout << "Data not sufficient!";
  return 0;
}
