#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  long long n, m, k;
  cin >> n >> m >> k;
  vector<set<long long>> rows(n);
  vector<set<long long>> cols(m);
  for (long long i = 0; i < k; i++) {
    long long r, c;
    cin >> r >> c;
    r--;
    c--;
    rows[r].insert(c);
    cols[c].insert(r);
  }
  long long row_bottom = n - 1;
  long long row_top = 0;
  long long col_left = 0;
  long long col_right = m - 1;
  long long rem = n * m - k - 1;
  long long curr_row = 0;
  long long curr_col = 0;
  for (long long i = 0; i < n * m; i++) {
    if (rem == 0) break;
    if (col_left > col_right || row_top > row_bottom) break;
    if (i % 4 == 0) {
      auto it = rows[curr_row].lower_bound(curr_col);
      long long move = col_right;
      if (it != rows[curr_row].end()) move = min(move, *(it)-1);
      if (curr_col != 0 && curr_col != 0)
        if (move <= curr_col) break;
      move = min(m - 1, move);
      move = max(0ll, move);
      rem -= (move - curr_col);
      curr_col = move;
      row_top = curr_row + 1;
    } else if (i % 4 == 1) {
      auto it = cols[curr_col].lower_bound(curr_row);
      long long move = row_bottom;
      if (it != cols[curr_col].end()) move = min(move, *(it)-1);
      if (move <= curr_row) break;
      move = min(n - 1, move);
      move = max(0ll, move);
      rem -= (move - curr_row);
      curr_row = move;
      col_right = curr_col - 1;
    } else if (i % 4 == 2) {
      auto it = rows[curr_row].lower_bound(curr_col);
      long long move = col_left;
      if (!rows[curr_row].empty()) {
        if (it != rows[curr_row].begin()) {
          it--;
          move = max(move, *(it) + 1);
        }
      }
      if (move >= curr_col) break;
      move = min(m - 1, move);
      move = max(0ll, move);
      rem -= (curr_col - move);
      curr_col = move;
      row_bottom = curr_row - 1;
    } else if (i % 4 == 3) {
      auto it = cols[curr_col].lower_bound(curr_row);
      long long move = row_top;
      if (!cols[curr_col].empty()) {
        if (it != cols[curr_col].begin()) {
          it--;
          move = max(move, *(it) + 1);
        }
      }
      move = min(n - 1, move);
      move = max(0ll, move);
      if (move >= curr_row) break;
      rem -= (curr_row - move);
      curr_row = move;
      col_left = curr_col + 1;
    }
  }
  if (rem > 0)
    cout << "No\n";
  else
    cout << "Yes\n";
}
