func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     long long q;     long long m;     cin >> q >> m;     long long j = 0;     vector<pair<long long, long long>> spells;     spells.push_back({0, 0});     for (int i = 0; i < q; i++) {       long long k, a, b;       cin >> k >> a >> b;       if (k == 1) {         long long x = 1 + (a + j) % 1000000;         long long y = 1 + (b + j) % 1000000;         long long l = -1;         long long r = spells.size();         while (l + 1 != r) {           long long mid = (r + l) / 2;           if (spells[mid].first < x)             l = mid;           else             r = mid;         }         if (r == spells.size() ||             (spells[r].second - spells[r - 1].second) *                     (x - spells[r - 1].first) >                 (y - spells[r - 1].second) *                     (spells[r].first - spells[r - 1].first)) {           spells.insert(spells.begin() + r, {x, y});           long long shift = 0;           while (r - shift > 1) {             if ((spells[r].second - spells[r - shift - 2].second) *                     (spells[r - shift - 1].first - spells[r - shift - 2].first) >                 (spells[r - shift - 1].second - spells[r - shift - 2].second) *                     (spells[r].first - spells[r - shift - 2].first))               break;             shift++;           }           if (shift > 0)             spells.erase(spells.begin() + r - shift, spells.begin() + r);         }       } else {         long long t = 1 + (a + j) % 1000000;         long long h = 1 + (b + j) % 1000000;         long long l = -1;         long long r = spells.size();         if (h > spells[r - 1].first * t) {           cout <<  NO n ;           continue;         }         while (l + 1 != r) {           long long mid = (r + l) / 2;           if (spells[mid].first * t < h)             l = mid;           else             r = mid;         }         if (spells[r - 1].second * (t * spells[r].first - h) +                 spells[r].second * (h - t * spells[r - 1].first) <=             m * (spells[r].first - spells[r - 1].first)) {           cout <<  YES n ;           j = i + 1;         } else           cout <<  NO n ;       }     }   }   