#include <bits/stdc++.h>
using namespace std;
int malt[1010][1010];
int n, m, k;
bool inMap(int a, int b) {
  if (a < 1 || a > n || b < 1 || b > m) return false;
  return true;
}
bool judge(int x, int y) {
  if (inMap(x - 1, y - 1) && inMap(x - 1, y) && inMap(x, y - 1)) {
    if (malt[x - 1][y - 1] && malt[x - 1][y] && malt[x][y - 1]) return true;
  }
  if (inMap(x - 1, y + 1) && inMap(x - 1, y) && inMap(x, y + 1)) {
    if (malt[x - 1][y + 1] && malt[x - 1][y] && malt[x][y + 1]) return true;
  }
  if (inMap(x + 1, y - 1) && inMap(x + 1, y) && inMap(x, y - 1)) {
    if (malt[x + 1][y - 1] && malt[x + 1][y] && malt[x][y - 1]) return true;
  }
  if (inMap(x + 1, y + 1) && inMap(x + 1, y) && inMap(x, y + 1)) {
    if (malt[x + 1][y + 1] && malt[x + 1][y] && malt[x][y + 1]) return true;
  }
  return false;
}
int main() {
  int a, b;
  while (scanf("%d%d%d", &n, &m, &k) != EOF) {
    int ans = 0;
    memset(malt, 0, sizeof(malt));
    for (int i = 1; i <= k; i++) {
      scanf("%d%d", &a, &b);
      malt[a][b] = 1;
      if (ans == 0 && judge(a, b)) {
        ans = i;
      }
    }
    printf("%d\n", ans);
  }
  return 0;
}
