#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7, inv2 = (MOD + 1) / 2;
double eps = 1e-6;
long long INF = 1e15;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
set<int> c1[200010], c2[200010];
int read() {
  int v = 0, f = 1;
  char c = getchar();
  while (c < 48 || 57 < c) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (48 <= c && c <= 57) v = (v << 3) + v + v + c - 48, c = getchar();
  return v * f;
}
int main() {
  int n = read(), m = read(), k = read();
  for (int i = (int)1; i <= (int)k; i++) {
    int x = read(), y = read();
    c1[x].insert(y);
    c2[y].insert(x);
  }
  for (int i = (int)1; i <= (int)n; i++) {
    c1[i].insert(0);
    c1[i].insert(m + 1);
  }
  for (int i = (int)1; i <= (int)m; i++) {
    c2[i].insert(0);
    c2[i].insert(n + 1);
  }
  int mx_x = n, mn_x = 1;
  int mx_y = m, mn_y = 1;
  long long s = 1;
  int x = 1, y = 1, d = 0;
  while (1) {
    int nx, ny;
    if (d == 0) {
      nx = x;
      auto it = c1[x].lower_bound(y);
      ny = min(*it - 1, mx_y);
      mn_x = nx + 1;
    }
    if (d == 1) {
      ny = y;
      auto it = c2[y].lower_bound(x);
      nx = min(*it - 1, mx_x);
      mx_y = ny - 1;
    }
    if (d == 2) {
      nx = x;
      auto it = c1[x].lower_bound(y);
      --it;
      ny = max(*it + 1, mn_y);
      mx_x = nx - 1;
    }
    if (d == 3) {
      ny = y;
      auto it = c2[y].lower_bound(x);
      --it;
      nx = max(*it + 1, mn_x);
      mn_y = ny + 1;
    }
    s += abs(nx - x) + abs(ny - y);
    if (nx == x && ny == y) {
      if (!(x == 1 && y == 1 && d == 0)) break;
    }
    d = (d + 1) % 4;
    x = nx, y = ny;
  }
  if (s == 1ll * n * m - k)
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
