#include <bits/stdc++.h>
using namespace std;
int fx[] = {0, 1, 0, -1};
int fy[] = {1, 0, -1, 0};
int sgn[] = {1, 1, -1, -1};
set<int> rght[100005], lft[100005], down[100005], up[100005];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int k;
  scanf("%d", &k);
  for (int i = 0; i < k; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    rght[x].insert(y);
    down[y].insert(x);
    lft[x].insert(-y);
    up[y].insert(-x);
  }
  int nwk = k;
  int dir = 0;
  long long vis = 1;
  int x = 1, y = 1;
  int nw;
  int mnx = 1, mny = 1, mxx = n, mxy = m;
  int turn = 0;
  while (mnx <= mxx && mny <= mxy) {
    if (turn == 2) break;
    if (dir == 0) {
      auto it = rght[x].upper_bound(y);
      if (it == rght[x].end()) {
        vis += mxy - y;
        if (y == mxy)
          turn++;
        else
          turn = 1;
        y = mxy;
        mnx = x + 1;
      } else {
        int val = *it;
        nw = min(val - 1, mxy);
        vis += nw - y;
        if (y == nw)
          turn++;
        else
          turn = 1;
        y = nw;
        mnx = x + 1;
      }
    } else if (dir == 1) {
      auto it = down[y].upper_bound(x);
      if (it == down[y].end()) {
        vis += mxx - x;
        if (x == mxx)
          turn++;
        else
          turn = 1;
        x = mxx;
        mxy = y - 1;
      } else {
        int val = *it;
        nw = min(val - 1, mxx);
        if (x == nw)
          turn++;
        else
          turn = 1;
        vis += nw - x;
        x = nw;
        mxy = y - 1;
      }
    } else if (dir == 2) {
      auto it = lft[x].upper_bound(-y);
      if (it == lft[x].end()) {
        vis += y - mny;
        if (y == mny)
          turn++;
        else
          turn = 1;
        y = mny;
        mxx = x - 1;
      } else {
        int val = -(*it);
        nw = max(val + 1, mny);
        vis += y - nw;
        if (y == nw)
          turn++;
        else
          turn = 1;
        y = nw;
        mxx = x - 1;
      }
    } else {
      auto it = up[y].upper_bound(-x);
      if (it == up[y].end()) {
        vis += x - mnx;
        if (x == mnx)
          turn++;
        else
          turn = 1;
        x = mnx;
        mny = y + 1;
      } else {
        int val = -(*it);
        nw = max(val + 1, mnx);
        if (x == nw)
          turn++;
        else
          turn = 1;
        vis += x - nw;
        x = nw;
        mny = y + 1;
      }
    }
    dir = (dir + 1) % 4;
  }
  if (vis == (1ll * n * m - k))
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
