#include <bits/stdc++.h>
using namespace std;
int main() {
  int h, q;
  cin >> h >> q;
  long long int mn, mx;
  mx = (1LL << (h - 1));
  mn = ((1LL << h) - 1);
  vector<pair<long long int, long long int> > yes, no;
  for (int i = 1; i <= q; i++) {
    long long int lev, l, r, ans;
    cin >> lev >> l >> r >> ans;
    for (int j = 1; j <= h - lev; j++) {
      l = l * 2;
      r = r * 2 + 1;
    }
    if (ans) {
      mn = min(mn, r);
      mx = max(mx, l);
      yes.push_back(make_pair(l, r));
    } else {
      no.push_back(make_pair(l, r));
    }
  }
  if (mn < mx) {
    cout << "Game cheated!" << endl;
    return 0;
  }
  set<pair<long long int, long long int> > S;
  S.insert(make_pair(mx, mn));
  for (int i = 0; i < no.size(); i++) {
    set<pair<long long int, long long int> >::iterator it;
    it = S.lower_bound(make_pair(no[i].first, 0));
    if (it != S.begin()) {
      --it;
      pair<long long int, long long int> p;
      p.first = it->first;
      p.second = min(it->second, no[i].first - 1);
      if (it->second > no[i].second) {
        S.insert(make_pair(no[i].second + 1, it->second));
      }
      S.erase(it);
      S.insert(p);
      it = S.find(p);
      it++;
    }
    vector<pair<long long int, long long int> > temp;
    for (; it != S.end(); ++it) {
      if (it->second <= no[i].second)
        temp.push_back(*it);
      else {
        pair<long long int, long long int> p;
        p.first = max(no[i].second + 1, it->first);
        p.second = it->second;
        S.erase(it);
        S.insert(p);
        break;
      }
    }
    for (int j = 0; j < temp.size(); j++) S.erase(temp[j]);
    temp.clear();
  }
  if (S.size()) {
    if (S.size() == 1 && S.begin()->first == S.begin()->second)
      cout << S.begin()->first << endl;
    else
      cout << "Data not sufficient!" << endl;
  } else {
    cout << "Game cheated!" << endl;
  }
  return 0;
}
