#include <bits/stdc++.h>
using namespace std;
using LL = long long;
constexpr int N = 1e5 + 5;
set<int> sx[N], sy[N];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < k; i++) {
    int x, y;
    cin >> x >> y;
    sx[x].insert(y);
    sy[y].insert(x);
  }
  for (int i = 1; i <= n; i++) {
    sx[i].insert(0);
    sx[i].insert(m + 1);
  }
  for (int j = 1; j <= m; j++) {
    sy[j].insert(0);
    sy[j].insert(n + 1);
  }
  LL visited = 1;
  int cx = 1, cy = 1, x1 = 1, y1 = 1, x2 = n, y2 = m;
  while (1) {
    if (x1 > x2 || y1 > y2) break;
    {
      if (cx < x1 || cx > x2) break;
      auto it = sx[cx].lower_bound(cy);
      int ny = min(y2, *it - 1);
      visited += ny - cy;
      x1 = cx + 1;
      cy = ny;
    }
    if (x1 > x2 || y1 > y2) break;
    {
      if (cy < y1 || cy > y2) break;
      auto it = sy[cy].lower_bound(cx);
      int nx = min(x2, *it - 1);
      visited += nx - cx;
      y2 = cy - 1;
      cx = nx;
    }
    if (x1 > x2 || y1 > y2) break;
    {
      if (cx < x1 || cx > x2) break;
      auto it = sx[cx].lower_bound(cy);
      it--;
      int ny = max(y1, *it + 1);
      visited += cy - ny;
      x2 = cx - 1;
      cy = ny;
    }
    if (x1 > x2 || y1 > y2) break;
    {
      if (cy < y1 || cy > y2) break;
      auto it = sy[cy].lower_bound(cx);
      it--;
      int nx = max(x1, *it + 1);
      visited += cx - nx;
      y1 = cy + 1;
      cx = nx;
    }
  }
  if (visited == (LL)n * m - k)
    cout << "Yes\n";
  else
    cout << "No";
}
