#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int maxn = 100000 + 5;
set<int> ox[maxn], oy[maxn];
int main() {
  int n, m, o;
  scanf("%d%d%d", &n, &m, &o);
  for (int i = 0; i < o; i++) {
    int xi, yi;
    scanf("%d%d", &xi, &yi);
    ox[xi].insert(yi);
    oy[yi].insert(xi);
  }
  for (int i = 0; i <= n; i++) {
    ox[i].insert(0);
    ox[i].insert(m + 1);
  }
  for (int i = 0; i <= m; i++) {
    oy[i].insert(0);
    oy[i].insert(n + 1);
  }
  int px = 1, py = 1;
  int L = 1, R = m, U = 1, D = n, dir = 0;
  ll ans = 1LL * n * m - o - 1LL;
  while (true) {
    int nx, ny;
    if (dir == 0) {
      nx = px;
      ny = min(*ox[px].upper_bound(py) - 1, R);
      U = px + 1;
    } else if (dir == 1) {
      ny = py;
      nx = min(*oy[py].upper_bound(px) - 1, D);
      R = py - 1;
    } else if (dir == 2) {
      nx = px;
      ny = max(*--ox[px].lower_bound(py) + 1, L);
      D = px - 1;
    } else if (dir == 3) {
      ny = py;
      nx = max(*--oy[py].lower_bound(px) + 1, U);
      L = py + 1;
    }
    ans -= (abs(nx - px) + abs(ny - py));
    if (nx == px && ny == py && !(dir == 0 && px == 1 && py == 1)) break;
    px = nx;
    py = ny;
    dir = (dir + 1) % 4;
  }
  if (ans == 0)
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
