func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = (int)2e5 + 7;   int n, m, q;   set<int> ds[N];   set<int> us[N];   struct T {     int min_d;     int max_u;     bool ok;   };   T operator+(T a, T b) {     int min_d = min(a.min_d, b.min_d);     int max_u = max(a.max_u, b.max_u);     bool ok = a.ok & b.ok & (a.min_d > b.max_u);     return {min_d, max_u, ok};   }   T t[4 * N];   void rec(int v, int tl, int tr, int i) {     if (tr < i || i < tl) {       return;     }     if (tl == tr) {       auto it1 = ds[tl].begin();       t[v].min_d = *it1;       auto it2 = us[tl].end();       it2--;       t[v].max_u = *it2;       t[v].ok = (t[v].min_d > t[v].max_u);       return;     }     int tm = (tl + tr) / 2;     rec(2 * v, tl, tm, i);     rec(2 * v + 1, tm + 1, tr, i);     t[v] = t[2 * v] + t[2 * v + 1];   }   void ins(int r, int c) {     int x = (r + 1) / 2, y = (c + 1) / 2;     if (r % 2 == 1) {       ds[x].insert(y);     } else {       us[x].insert(y);     }     rec(1, 1, n, x);   }   void del(int r, int c) {     int x = (r + 1) / 2, y = (c + 1) / 2;     if (r % 2 == 1) {       ds[x].erase(y);     } else {       us[x].erase(y);     }     rec(1, 1, n, x);   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cin >> n >> m >> q;     for (int i = 1; i <= n; i++) {       ds[i].insert((int)1e9);       us[i].insert(-(int)1e9);       rec(1, 1, n, i);     }     set<pair<int, int>> s;     for (int i = 1; i <= q; i++) {       int r, c;       cin >> r >> c;       if (s.count({r, c}) == 0) {         ins(r, c);         s.insert({r, c});       } else {         del(r, c);         s.erase({r, c});       }       if (t[1].ok) {         cout <<  YES n ;       } else {         cout <<  NO n ;       }     }     return 0;   }   