#include <bits/stdc++.h>
using namespace std;
vector<int> r[100100], c[100100];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= k; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    r[x].push_back(y);
    c[y].push_back(x);
  }
  int fg = 0, px = 1, py = 1;
  long long cnt = 1ll * n * m - k;
  int lr = 0, ur = n + 1, lc = 0, uc = m + 1;
  int tg = -1;
  while (lr < px && px < ur && lc < py && py < uc) {
    if (fg == 0) {
      int mi = uc;
      for (int i : r[px]) {
        if (i > lc) {
          mi = min(i, mi);
        }
      }
      uc = mi;
      long long d = max(1ll * mi - lc - 1, 0ll);
      if (px != 1 && d == 0) break;
      if (d == 0) {
        fg = (fg + 1) % 4;
        continue;
      }
      lr = px;
      px++;
      py = mi - 1;
      cnt -= d;
    } else if (fg == 1) {
      int mi = ur;
      for (int i : c[py]) {
        if (i > lr) {
          mi = min(mi, i);
        }
      }
      ur = mi;
      long long d = max(1ll * mi - lr - 1, 0ll);
      if (d == 0) break;
      cnt -= d;
      uc = py;
      py--;
      px = mi - 1;
    } else if (fg == 2) {
      int ma = lc;
      for (int i : r[px]) {
        if (i < uc) {
          ma = max(ma, i);
        }
      }
      lc = max(lc, ma);
      ur = px;
      px--;
      long long d = max(0ll, 1ll * uc - lc - 1);
      if (d == 0) break;
      cnt -= d;
      py = ma + 1;
    } else {
      int ma = lr;
      for (int i : c[py]) {
        if (i < ur) {
          ma = max(i, ma);
        }
      }
      lr = ma;
      long long d = max(0ll, 1ll * ur - lr - 1);
      if (d == 0) break;
      cnt -= d;
      lc = py;
      py++;
      px = ma + 1;
    }
    fg = (fg + 1) % 4;
  }
  if (cnt == 0) {
    printf("Yes\n");
  } else {
    assert(cnt > 0);
    printf("No\n");
  }
  return 0;
}
