#include <bits/stdc++.h>
int main() {
  int n, m, k, l;
  scanf("%d%d%d", &n, &m, &l);
  int mat[1005][1005];
  memset(mat, 0, sizeof(mat));
  int i, j, a, b, flag;
  k = flag = 0;
  for (i = 1; i <= l; i++) {
    scanf("%d%d", &a, &b);
    mat[a][b] = 1;
    if (a == 1 && b == 1) {
      if (mat[a + 1][b + 1] == 1 && mat[a][b + 1] == 1 && mat[a][b + 1] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
    }
    if (a == n && b == m) {
      if (mat[a - 1][b - 1] == 1 && mat[a][b - 1] == 1 && mat[a - 1][b] == 1 &&
          flag == 0) {
        flag = 1;
        k = i;
      }
    }
    if (a < n && b == m) {
      if (mat[a][b - 1] == 1 && mat[a - 1][b - 1] == 1 && mat[a - 1][b] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
      if (mat[a][b - 1] == 1 && mat[a + 1][b - 1] == 1 && mat[a + 1][b] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
    }
    if (b < m && a == n) {
      if (mat[a][b + 1] == 1 && mat[a - 1][b] == 1 && mat[a - 1][b + 1] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
      if (mat[a][b + 1] == 1 && mat[a + 1][b + 1] == 1 && mat[a + 1][b] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
    } else {
      if (mat[a][b - 1] == 1 && mat[a - 1][b - 1] == 1 && mat[a - 1][b] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
      if (mat[a][b - 1] == 1 && mat[a + 1][b - 1] == 1 && mat[a + 1][b] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
      if (mat[a][b + 1] == 1 && mat[a - 1][b] == 1 && mat[a - 1][b + 1] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
      if (mat[a][b + 1] == 1 && mat[a + 1][b + 1] == 1 && mat[a + 1][b] == 1 &&
          flag == 0) {
        k = i;
        flag = 1;
      }
    }
  }
  printf("%d\n", k);
  return 0;
}
