#include <bits/stdc++.h>
using namespace std;
int main() {
  int h, q;
  scanf("%d%d", &h, &q);
  long long nowl = 1ll << (h - 1), nowr = (1ll << h) - 1;
  vector<pair<long long, long long>> list;
  for (int i = 1; i <= q; i++) {
    int nowh, type;
    long long l, r;
    scanf("%d%I64d%I64d%d", &nowh, &l, &r, &type);
    for (int j = nowh + 1; j <= h; j++) {
      l <<= 1;
      (r <<= 1) |= 1;
    }
    if (type) {
      nowl = max(nowl, l);
      nowr = min(nowr, r);
    } else
      list.push_back({l, r});
  }
  sort(list.begin(), list.end());
  for (int i = 0; i < (int)list.size(); i++)
    if (list[i].first <= nowl && list[i].second >= nowl)
      nowl = list[i].second + 1;
  for (int i = (int)list.size() - 1; i >= 0; i--)
    if (list[i].first <= nowr && list[i].second >= nowr)
      nowr = list[i].first - 1;
  if (nowl > nowr)
    puts("Game cheated!");
  else if (nowl == nowr)
    printf("%I64d\n", nowl);
  else
    puts("Data not sufficient!");
  return 0;
}
