func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   void sf(T &res) {     int f = 1;     char c;     res = 0;     while (c = getchar(), !isdigit(c))       ;     if (c ==  - ) f = -1, c = getchar();     do res = (res << 1) + (res << 3) + (c ^ 48);     while (c = getchar(), isdigit(c));     res *= f;   }   long long h, q, L, R, pos, ANS;   struct node {     long long l, r;     bool operator<(const node &a) const {       if (l != a.l) return l < a.l;       return r < a.r;     }   };   vector<node> v;   int main() {     sf(h), sf(q);     L = 1ll << (h - 1);     R = (1ll << h) - 1;     while (q--) {       long long l, r;       int f, ans;       sf(f), sf(l), sf(r), sf(ans);       for (int j = f; j < h; j++) l *= 2, r = r * 2 + 1;       if (ans) {         if (L <= l - 1) v.push_back((node){L, l - 1});         if (r + 1 <= R) v.push_back((node){r + 1, R});       } else         v.push_back((node){l, r});     }     pos = L, ANS = -1;     v.push_back((node){R + 1, R + 1});     sort(v.begin(), v.end());     for (int i = 0; i < v.size(); i++) {       long long x = v[i].l, y = v[i].r;       if (x > pos) {         if (x - pos == 1) {           if (ANS == -1)             ANS = pos;           else {             puts( Data not sufficient! );             return 0;           }         } else {           puts( Data not sufficient! );           return 0;         }       }       pos = max(pos, y + 1);     }     if (ANS == -1)       puts( Game cheated! );     else       cout << ANS << endl;     return 0;   }   