#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pl = pair<ll, ll>;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
vector<int> vx[100001], vy[100001];
int n, m, k;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> m >> k;
  for (int i = 0; i < k; i++) {
    int x, y;
    cin >> x >> y;
    vx[x].push_back(y);
    vy[y].push_back(x);
  }
  for (int i = 1; i <= n; i++) sort(vx[i].begin(), vx[i].end());
  for (int i = 1; i <= m; i++) sort(vy[i].begin(), vy[i].end());
  int sx = 1, sy = 1, ex = n, ey = m;
  int cx = 1, cy = 0;
  int dir = 0;
  ll cnt = 0;
  while (1) {
    if (sx > ex || sy > ey) break;
    if (dir == 0) {
      int ny = ey;
      for (int y : vx[cx]) {
        if (y <= cy) continue;
        if (y > ey) break;
        ny = y - 1;
        break;
      }
      cnt += ny - cy;
      cy = ey = ny;
      sx++;
      dir++;
    } else if (dir == 1) {
      int nx = ex;
      for (int x : vy[cy]) {
        if (x <= cx) continue;
        if (x > ex) break;
        nx = x - 1;
        break;
      }
      cnt += nx - cx;
      cx = ex = nx;
      ey--;
      dir++;
    } else if (dir == 2) {
      int ny = sy;
      for (int i = vx[cx].size() - 1; i >= 0; i--) {
        if (vx[cx][i] >= cy) continue;
        if (vx[cx][i] < sy) break;
        ny = vx[cx][i] + 1;
        break;
      }
      cnt += cy - ny;
      cy = sy = ny;
      ex--;
      dir++;
    } else if (dir == 3) {
      int nx = sx;
      for (int i = vy[cy].size() - 1; i >= 0; i--) {
        if (vy[cy][i] >= cx) continue;
        if (vy[cy][i] < sx) break;
        nx = vy[cy][i] + 1;
        break;
      }
      cnt += cx - nx;
      cx = sx = nx;
      sy++;
      dir++;
    }
    dir %= 4;
  }
  cout << (cnt + k == 1LL * n * m ? "Yes" : "No");
}
