#include <bits/stdc++.h>
long double pi = acos(-1.0);
const int mod = 1e9 + 7;
using namespace std;
long long n, m, k;
vector<vector<int>> r, c;
long long cnt = 0;
long long len = 1;
void die() {
  cout << "No";
  exit(0);
}
void go(int x, int y, int dir, int lx, int rx, int ly, int ry) {
  if (len == cnt) {
    return;
  }
  if (lx > rx || ly > ry) return;
  if (dir == 1) {
    int nxt = *lower_bound((r[x]).begin(), (r[x]).end(), y) - 1;
    nxt = min(nxt, ry);
    len += abs(y - nxt);
    go(x, nxt, 2, lx + 1, rx, ly, nxt);
  }
  if (dir == 2) {
    int nxt = *lower_bound((c[y]).begin(), (c[y]).end(), x) - 1;
    nxt = min(nxt, rx);
    len += abs(x - nxt);
    go(nxt, y, 3, lx, nxt, ly, ry - 1);
  }
  if (dir == 3) {
    int nxt =
        r[x]
         [(lower_bound((r[x]).begin(), (r[x]).end(), y) - r[x].begin()) - 1] +
        1;
    nxt = max(nxt, ly);
    len += abs(y - nxt);
    go(x, nxt, 4, lx, rx - 1, nxt, ry);
  }
  if (dir == 4) {
    int nxt =
        c[y]
         [(lower_bound((c[y]).begin(), (c[y]).end(), x) - c[y].begin()) - 1] +
        1;
    nxt = max(nxt, lx);
    len += abs(x - nxt);
    go(nxt, y, 1, nxt, rx, ly + 1, ry);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(20);
  cout.setf(ios::fixed);
  cin >> n >> m >> k;
  r.resize(n);
  c.resize(m);
  for (int(i) = 0; (i) < k; (i)++) {
    int x, y;
    cin >> x >> y;
    x--, y--;
    r[x].push_back(y);
    c[y].push_back(x);
  }
  for (int(i) = 0; (i) < n; (i)++) {
    r[i].push_back(m);
    r[i].push_back(-1);
    sort((r[i]).begin(), (r[i]).end());
  }
  for (int(i) = 0; (i) < m; (i)++) {
    c[i].push_back(n);
    c[i].push_back(-1);
    sort((c[i]).begin(), (c[i]).end());
  }
  cnt = n * m - k;
  go(0, 0, 1, 0, n - 1, 0, m - 1);
  if (cnt != len) {
    cout << "No";
    return 0;
  }
  cout << "Yes";
  return 0;
}
