#include <bits/stdc++.h>
using namespace std;
const int INF = 1000 * 1000 * 1000;
const long long INF64 = 1LL * INF * INF;
const long long mod = INF + 7;
void solve() {
  int h, q;
  cin >> h >> q;
  set<pair<long long, long long>> f;
  long long min = 1LL << (h - 1), max = (1LL << h) - 1;
  f.insert({min, max});
  for (int i = 0; i < q; ++i) {
    long long l, r;
    int hh, ans;
    cin >> hh >> l >> r >> ans;
    while (l < min && l <= max) l *= 2;
    while (r < min && r <= max) r = 2 * r + 1;
    auto it = f.lower_bound({l, l});
    if (it == f.end() || it->first > l && it != f.begin())
      if (it != f.begin() && (--it)->second < l) ++it;
    vector<pair<long long, long long>> to_del;
    vector<pair<long long, long long>> to_ins;
    if (ans) {
      for (auto it2 = f.begin(); it2 != it; ++it2) to_del.push_back(*it2);
      for (it; it != f.end() && it->first <= r; ++it) {
        if (it->first <= l && it->second >= r) {
          to_del.push_back(*it);
          to_ins.push_back({l, r});
        } else if (it->first <= l) {
          to_del.push_back(*it);
          if (it->second >= l) to_ins.push_back({l, it->second});
        } else if (it->second >= r) {
          to_del.push_back(*it);
          to_ins.push_back({it->first, r});
        }
      }
      for (it; it != f.end(); ++it) to_del.push_back(*it);
    } else {
      for (it; it != f.end() && it->first <= r; ++it) {
        if (it->first <= l && it->second >= r) {
          to_del.push_back(*it);
          if (it->first < l) to_ins.push_back({it->first, l - 1});
          if (it->second > r) to_ins.push_back({r + 1, it->second});
        } else if (it->first <= l) {
          to_del.push_back(*it);
          if (it->first < l) to_ins.push_back({it->first, l - 1});
        } else if (it->second >= r) {
          to_del.push_back(*it);
          if (it->second > r) to_ins.push_back({r + 1, it->second});
        } else
          to_del.push_back(*it);
      }
    }
    for (auto it : to_del) f.erase(it);
    for (auto it : to_ins) f.insert(it);
  }
  if (f.empty())
    cout << "Game cheated!" << endl;
  else if (f.size() == 1 && f.begin()->first == f.begin()->second)
    cout << f.begin()->first << endl;
  else
    cout << "Data not sufficient!" << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  solve();
  return 0;
}
