func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   inline T sqr(const T& a) {     return a * a;   }   template <typename T>   inline int sign(const T& a) {     return a < 0 ? -1 : a > 0;   }   void task();   int main() {     ios_base::sync_with_stdio(0);     task();     return 0;   }   int h, q;   long long int l, r;   vector<pair<long long, long long> > bad;   vector<pair<long long, long long> > ok;   void task() {     cin >> h >> q;     long long int start = 1;     for (int i = 1; i < h; ++i) start *= 2;     l = start;     r = start * 2 - 1;     while (q--) {       long long int i;       long long int _l, _r, ans;       cin >> i >> _l >> _r >> ans;       while (_l < start) _l *= 2;       while (_r < start) _r *= 2, ++_r;       if (ans) {         if (_l > r || _r < l) {           cout <<  Game cheated! ;           return;         }         l = max(l, _l);         r = min(r, _r);         ok.push_back(pair<long long, long long>{_l, _r});       } else {         bad.push_back(pair<long long, long long>{_l, _r});       }     }     bad.push_back(pair<long long, long long>{-2, -2});     bad.push_back(pair<long long, long long>{4 * start, 4 * start});     sort((bad.begin()), (bad.end()));     vector<pair<long long, long long> > v;     pair<long long, long long> cur = bad[0];     for (int i = 1; i < (int)bad.size(); ++i) {       pair<long long, long long> x = bad[i];       if (x.first <= cur.second + 1) {         cur.second = max(cur.second, x.second);       } else {         v.push_back(cur);         cur = x;       }     }     v.push_back(cur);     bad = v;     vector<pair<long long, long long> > well;     long long int sum = 0;     for (int i = 1; i < bad.size(); ++i) {       long long int ll = max(bad[i - 1].second, l - 1);       long long int rr = min(r + 1, bad[i].first);       long long int len = rr - ll - 1;       if (len > 0) {         well.push_back(pair<long long, long long>{ll + 1, rr - 1});         sum += len;       }     }     if (sum == 0) {       cout <<  Game cheated! ;     } else if (sum == 1) {       assert(well.front().first == well.front().second);       assert(well.size() == 1);       cout << well.front().first;     } else {       cout <<  Data not sufficient! ;     }   }   