#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100100;
set<int> l[MAXN], c[MAXN], il[MAXN], ic[MAXN];
signed main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 1; i <= k; i++) {
    int x, y;
    cin >> x >> y;
    l[x].insert(y), il[x].insert(-y);
    c[y].insert(x), ic[y].insert(-x);
  }
  for (int i = 1; i <= m; i++) {
    c[i].insert(0);
    c[i].insert(n + 1), ic[i].insert(-(n + 1));
  }
  for (int i = 1; i <= n; i++) {
    l[i].insert(0);
    l[i].insert(m + 1), il[i].insert(-(m + 1));
  }
  int A = 0, B = m + 1, C = 1, D = n + 1;
  int x = 1, y = 1;
  int res = 1;
  int estado = 0;
  int cnt = 0;
  while (true) {
    int muda;
    cnt++;
    if (estado == 0) {
      auto h = l[x].upper_bound(y);
      if (*h > B)
        muda = B - 1;
      else
        muda = *h - 1;
      B = muda;
      if (cnt > 1 && muda == y) break;
      res += abs(y - muda);
      y = muda;
    }
    if (estado == 1) {
      auto h = c[y].upper_bound(x);
      if (*h > D)
        muda = D - 1;
      else
        muda = *h - 1;
      D = muda;
      if (muda == x) break;
      res += abs(x - muda);
      x = muda;
    }
    if (estado == 2) {
      auto h = il[x].upper_bound(-y);
      if (-*h < A)
        muda = A + 1;
      else
        muda = -*h + 1;
      A = muda;
      if (muda == y) break;
      res += abs(y - muda);
      y = muda;
    }
    if (estado == 3) {
      auto h = ic[y].upper_bound(-x);
      if (-*h < C)
        muda = C + 1;
      else
        muda = -*h + 1;
      C = muda;
      if (muda == x) break;
      res += abs(x - muda);
      x = muda;
    }
    estado++, estado %= 4;
  }
  if (res == n * m - k)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}
