#include <bits/stdc++.h>
using namespace std;
struct edge {
  int u, v;
  long long w;
};
long long MOD = 1000000007;
long long _MOD = 1000000009;
double EPS = 1e-10;
int main() {
  int h, q;
  cin >> h >> q;
  if (q == 0) {
    if (h == 1)
      cout << 1 << endl;
    else
      cout << "Data not sufficient!" << endl;
    return 0;
  }
  long long l = (1LL << (h - 1)) - 1, r = (1LL << h) - 1;
  map<long long, int> m;
  for (int j = 0; j < q; j++) {
    int i, ans;
    long long L, R;
    scanf("%d%I64d%I64d%d", &i, &L, &R, &ans);
    L <<= (h - i);
    L--;
    R++;
    R <<= (h - i);
    R--;
    if (ans) {
      m[L]++;
      m[R]--;
    } else {
      m[l]++;
      m[L]--;
      m[R]++;
      m[r]--;
    }
  }
  int z = 0;
  long long ans, sum = 0;
  for (auto it = m.begin(); it != m.end(); it++) {
    long long x = it->first;
    int y = it->second;
    z += y;
    if (z == q) {
      ans = x + 1;
      it++;
      long long _x = it->first;
      it--;
      sum += _x - x;
    }
  }
  if (sum == 0) cout << "Game cheated!" << endl;
  if (sum == 1) cout << ans << endl;
  if (sum >= 2) cout << "Data not sufficient!" << endl;
}
