#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
const int R = 3010, C = 6010;
bool v[R][C];
int f[R * C], rp[R * C], x, y, r, c, n, ret;
const int dx[] = {-1, -1, -1, 0, 0, 1, 1, 1},
          dy[] = {-1, 0, 1, -1, 1, -1, 0, 1};
int find(int x) { return f[x] == x ? x : f[x] = find(f[x]); }
void ff(int x, int y, int id) {
  for (int i = 0; i < 8; i++) {
    int px = x + dx[i], py = (y + 2 * c + dy[i]) % (2 * c);
    if (px < 0 || px >= r) continue;
    if (v[px][py]) rp[find(px * 2 * c + py)] = id;
  }
}
bool gg(int x, int y, int id) {
  for (int i = 0; i < 8; i++) {
    int px = x + dx[i], py = (y + 2 * c + dy[i]) % (2 * c);
    if (px < 0 || px >= r) continue;
    if (v[px][py] && rp[find(px * 2 * c + py)] == id) return 0;
  }
  return 1;
}
void add(int x, int y) {
  v[x][y] = 1;
  for (int i = 0; i < 8; i++) {
    int px = x + dx[i], py = (y + 2 * c + dy[i]) % (2 * c);
    if (px < 0 || px >= r) continue;
    if (v[px][py]) f[find(px * 2 * c + py)] = find(x * 2 * c + y);
  }
}
int main() {
  scanf("%d%d%d", &r, &c, &n);
  if (c == 1) return puts("0"), 0;
  for (int i = 0; i < r * c * 2; i++) f[i] = i;
  for (int i = 1; i < n + 1; i++) {
    scanf("%d%d", &x, &y);
    --x, --y;
    ff(x, y, i);
    if (gg(x, y + c, i)) {
      add(x, y);
      add(x, y + c);
      ret++;
    }
  }
  printf("%d\n", ret);
}
