func_code_string: #include <bits/stdc++.h>   using namespace std;   long long poww(long long a, long long b, long long md) {     return (!b ? 1                : (b & 1 ? a * poww(a * a % md, b / 2, md) % md                         : poww(a * a % md, b / 2, md) % md));   }   const long long MAXN = 1e5 + 10;   const long long INF = 8e18;   const long long MOD = 1e9 + 7;   set<pair<long long, long long> > st;   set<long long> lst[MAXN], rst[MAXN], ust[MAXN], dst[MAXN];   long long n, m, k;   int main() {     cin >> n >> m >> k;     long long u = 0, d = n + 1, l = 0, r = m + 1;     for (int i = 0; i < k; i++) {       long long x, y;       cin >> x >> y;       st.insert({x, y});       dst[y].insert(x);       ust[y].insert(-x);       rst[x].insert(y);       lst[x].insert(-y);     }     long long dir = 0, cnt = 0;     while (u + 1 < d && l + 1 < r) {       if (dir == 0) {         u++;         auto it = rst[u].lower_bound(l + 1);         if (it != rst[u].end()) r = min(*it, r);         cnt += r - l - 1;       } else if (dir == 1) {         r--;         auto it = dst[r].lower_bound(u + 1);         if (it != dst[r].end()) d = min(*it, d);         cnt += d - u - 1;       } else if (dir == 2) {         d--;         auto it = lst[d].lower_bound(-1 * (r - 1));         if (it != lst[d].end()) l = max(-1 * (*it), l);         cnt += r - l - 1;       } else if (dir == 3) {         l++;         auto it = ust[l].lower_bound(-1 * (d - 1));         if (it != ust[l].end()) u = max(-1 * (*it), u);         cnt += d - u - 1;       }       dir++;       dir %= 4;     }     if (cnt == n * m - k) return cout <<  Yes  <<   n , 0;     cout <<  No  <<   n ;     return 0;   }   