#include <bits/stdc++.h>
using namespace std;
const int MM = 1005;
const long long MOD = 1000000007;
int vis[MM][MM] = {0};
int n, m, k;
bool judge(int x, int y) {
  if (x - 1 >= 0 && y - 1 >= 0) {
    if (vis[x - 1][y - 1] && vis[x - 1][y] && vis[x][y - 1]) return true;
  }
  if (x - 1 >= 0 && y + 1 < m) {
    if (vis[x - 1][y + 1] && vis[x - 1][y] && vis[x][y + 1]) return true;
  }
  if (x + 1 < n && y - 1 >= 0) {
    if (vis[x + 1][y - 1] && vis[x][y - 1] && vis[x + 1][y]) return true;
  }
  if (x + 1 < n && y + 1 < m) {
    if (vis[x + 1][y + 1] && vis[x + 1][y] && vis[x][y + 1]) return true;
  }
  return false;
}
int main() {
  int ans = 0, flag = 0;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < k; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    x--;
    y--;
    vis[x][y] = 1;
    if (!flag && judge(x, y)) {
      ans = i + 1;
      flag = 1;
    }
  }
  if (!flag)
    puts("0");
  else
    printf("%d\n", ans);
  return 0;
}
