func_code_string: #include <bits/stdc++.h>   using namespace std;   int father[18000010], nRow, nCol;   bool col[3010][3010 * 2];   int movex[] = {1, 1, 1, 0, 0, -1, -1, -1};   int movey[] = {-1, 0, 1, 1, -1, -1, 0, 1};   int Find(int p, int *father) {     if (father[p] != p) father[p] = Find(father[p], father);     return father[p];   }   void read() {     scanf( %d %d , &nRow, &nCol);     nCol *= 2;     for (int i = 1; i <= nRow * nCol; ++i) father[i] = i;   }   bool check(int x1, int y1, int x2, int y2) {     static int fa[18000010], e[3010][2];     col[x1][y1] = col[x2][y2] = 1;     int tot = 0;     int pa = Find((x1 - 1) * nCol + y1, father),         pb = Find((x2 - 1) * nCol + y2, father);     fa[Find(pa, father)] = father[pa], fa[Find(pb, father)] = father[pb];     for (int j = 0, x, y; j < 8; ++j) {       x = x1 + movex[j], y = y1 + movey[j];       if (y == 0) y = nCol;       if (y == nCol + 1) y = 1;       if (x >= 1 && x <= nRow && y >= 1 && y <= nCol && col[x][y]) {         int p = Find((x - 1) * nCol + y, father);         fa[p] = p, ++tot, e[tot][0] = p, e[tot][1] = pa;       }       x = x2 + movex[j], y = y2 + movey[j];       if (y == 0) y = nCol;       if (y == nCol + 1) y = 1;       if (x >= 1 && x <= nRow && y >= 1 && y <= nCol && col[x][y]) {         int p = Find((x - 1) * nCol + y, father);         fa[p] = p, ++tot, e[tot][0] = p, e[tot][1] = pb;       }     }     for (int i = 1; i <= tot; ++i) fa[Find(e[i][0], fa)] = Find(e[i][1], fa);     col[x1][y1] = col[x2][y2] = 0;     return Find(pa, fa) != Find(pb, fa);   }   void print() {     for (int i = 1; i <= nRow; ++i, printf(  n ))       for (int j = 1; j <= nCol / 2; ++j) printf( %d  , col[i][j]);     printf(  n );   }   void work(int a, int b) {     int pa = Find((a - 1) * nCol + b, father);     for (int j = 0; j < 8; ++j) {       int x = a + movex[j], y = b + movey[j];       if (x < 1 || x > nRow) continue;       if (y == 0) y = nCol;       if (y == nCol + 1) y = 1;       if (x >= 1 && x <= nRow && y >= 1 && y <= nCol && col[x][y])         father[Find((x - 1) * nCol + y, father)] = Find(pa, father);     }   }   void Query() {     int cnt = 0, m;     scanf( %d , &m);     for (int i = 1, a, b; i <= m; ++i) {       scanf( %d %d , &a, &b);       if (check(a, b, a, b + nCol / 2))         col[a][b] = 1, col[a][b + nCol / 2] = 1, ++cnt, work(a, b),         work(a, b + nCol / 2);     }     printf( %d n , cnt);   }   int main() {     read();     Query();     return 0;   }   