#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long> > v;
int main() {
  long long h, q, i, l, r, ans, maxleft, maxright, temp;
  scanf("%lld%lld", &h, &q);
  maxleft = (1LL << h) / 2;
  maxright = (1LL << h) - 1;
  while (q--) {
    scanf("%lld%lld%lld%lld", &i, &l, &r, &ans);
    l = l * (1LL << (h - i));
    r = ((r + 1) * (1LL << (h - i))) - 1;
    if (ans == 1) {
      maxleft = max(maxleft, l);
      maxright = min(maxright, r);
    } else
      v.push_back(make_pair(l, r));
  }
  v.push_back(make_pair(1, maxleft - 1));
  v.push_back(make_pair(maxright + 1, 1LL << h));
  sort(v.begin(), v.end());
  maxright = (1LL << h) / 2 - 1;
  temp = ans = 0;
  for (int i = 0; i < v.size(); i++) {
    if (v[i].first > maxright + 1) {
      ans = v[i].first - 1;
      temp += v[i].first - maxright - 1;
    }
    maxright = max(maxright, v[i].second);
  }
  if (temp == 0)
    puts("Game cheated!");
  else if (temp > 1)
    puts("Data not sufficient!");
  else
    printf("%lld\n", ans);
  return 0;
}
