#include <bits/stdc++.h>
using namespace std;
const int maxn = 111111;
vector<pair<long long, long long> > G;
long long l[maxn], r[maxn];
long long h;
long long getr(long long r, long long hv) {
  long long n = h - hv;
  while (n--) {
    r = (r << 1ll) | 1ll;
  }
  return r;
}
int main() {
  long long m, hv, l, r, ok;
  cin >> h >> m;
  long long a = 1ll << (h - 1ll), b = getr(1ll, 1ll);
  int flag = 1;
  for (int i = 0; i < m; i++) {
    cin >> hv >> l >> r >> ok;
    if (!flag) continue;
    l = l << (h - hv);
    r = getr(r, hv);
    if (ok) {
      a = max(a, l);
      b = min(b, r);
      if (a > b) flag = 0;
    } else {
      G.push_back(make_pair(l, r));
    }
  }
  if (flag) {
    sort(G.begin(), G.end());
    for (int i = 0; i < G.size(); i++) {
      if (G[i].first <= a && G[i].second >= a) a = G[i].second + 1;
    }
    for (int i = G.size() - 1; i >= 0; i--) {
      if (G[i].first <= b && G[i].second >= b) b = G[i].first - 1;
    }
  }
  if (a > b)
    cout << "Game cheated!" << endl;
  else if (a == b)
    cout << a << endl;
  else
    cout << "Data not sufficient!" << endl;
}
