func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 3003 * 6006;   const int qwq = 303030;   const int inf = 0x3f3f3f3f;   int n, m, k;   int f[N], fa[N], st[123], cnt;   int ans;   int ff[] = {1, 1, 1, 0, -1, -1, -1, 0};   int gg[] = {1, 0, -1, -1, -1, 0, 1, 1};   inline int read() {     int sum = 0, f = 1;     char c = getchar();     while (c <  0  || c >  9 ) {       if (c ==  - ) f = -1;       c = getchar();     }     while (c >=  0  && c <=  9 ) {       sum = sum * 10 + c -  0 ;       c = getchar();     }     return sum * f;   }   inline int dian(int x, int y) {     if (y == 0) y = 2 * m;     if (y == 2 * m + 1) y = 1;     return (x - 1) * (m << 1) + y;   }   int find(int u) {     while (fa[u] != u) u = fa[u];     return u;   }   int Splay(int u) { return fa[u] == u ? u : fa[u] = Splay(fa[u]); }   int main() {     int x, y;     n = read();     m = read();     k = read();     if (m == 1) {       cout << 0;       return 0;     }     for (int i = 1; i <= n * m * 2; i++) fa[i] = i;     while (k--) {       cnt = 0;       x = read();       y = read();       for (int i = 0; i <= 8; i++) {         if (x + ff[i] < 1 || x + ff[i] > n) continue;         int u = dian(x + ff[i], y + gg[i]);         if (!f[u]) continue;         int aa = find(u);         int bb = find(dian(x, y));         if (aa == bb) continue;         st[++cnt] = bb;         fa[bb] = aa;       }       y += m;       for (int i = 0; i < 8; i++) {         if (x + ff[i] < 1 || x + ff[i] > n) continue;         int u = dian(x + ff[i], y + gg[i]);         if (!f[u]) continue;         int aa = find(u);         int bb = find(dian(x, y));         if (aa == bb) continue;         st[++cnt] = bb;         fa[bb] = aa;       }       y -= m;       if (find(dian(x, y)) != find(dian(x, y + m))) {         ans++;         for (int i = 0; i < 8; i++) {           if (x + ff[i] < 1 || x + ff[i] > n) continue;           Splay(dian(x + ff[i], y + gg[i]));         }         y += m;         for (int i = 0; i < 8; i++) {           if (x + ff[i] < 1 || x + ff[i] > n) continue;           Splay(dian(x + ff[i], y + gg[i]));         }         y -= m;         f[dian(x, y)] = f[dian(x, y + m)] = 1;       } else {         for (int i = 1; i <= cnt; i++) fa[st[i]] = st[i];       }     }     cout << ans;     return 0;   }   