#include <bits/stdc++.h>
const double EPS = 1e-6;
using namespace std;
void process(int caseNum) {}
int main() {
  int hmax, q;
  cin >> hmax >> q;
  vector<pair<long long int, long long int>> neg_pairs;
  vector<pair<long long int, long long int>> pairs;
  for (int i = 0; i < q; i++) {
    long long int h, l, r, ans;
    cin >> h >> l >> r >> ans;
    for (int i = 0; i < hmax - h; i++) {
      l *= 2;
      r *= 2;
      r++;
    }
    if (ans == 1) {
      if (l > 1LL << (hmax - 1))
        neg_pairs.push_back({1LL << (hmax - 1), l - 1});
      if (r < (1LL << (hmax)) - 1)
        neg_pairs.push_back({r + 1, (1LL << (hmax)) - 1});
      pairs.push_back({l, r});
    } else
      neg_pairs.push_back({l, r});
  }
  sort(neg_pairs.begin(), neg_pairs.end());
  sort(pairs.begin(), pairs.end());
  long long int l = 1LL << (hmax - 1);
  long long int ans = l;
  bool hole = false;
  bool ambiguous = false;
  for (const auto& p : neg_pairs) {
    if (p.first == l)
      l = p.second + 1;
    else if (p.first < l)
      l = max(l, p.second + 1);
    else if (l + 1 == p.first) {
      if (!hole) {
        hole = true;
        ans = l;
        l = p.second + 1;
      } else {
        ambiguous = true;
      }
    } else if (l + 1 < p.first) {
      hole = true;
      ambiguous = true;
    }
  }
  bool cheated = false;
  if (!hole) {
    if (l == (1LL << hmax) - 1) {
      ans = l;
      hole = true;
    } else if (l < (1LL << hmax) - 1) {
      hole = true;
      ambiguous = true;
    } else {
      cheated = true;
    }
  }
  if (cheated)
    cout << "Game cheated!" << endl;
  else if (ambiguous)
    cout << "Data not sufficient!" << endl;
  else
    cout << ans << endl;
  return 0;
}
