#include <bits/stdc++.h>
using namespace std;

struct Pos{ int x, y, i; };

int R, C, n;
vector<Pos> v;
stack<int> st;
const int B = 2e8;

int get(Pos p){
	if(p.x == 0) return p.y;
	if(p.y == C) return B + p.x;
	if(p.x == R) return 3 * B - p.y;
	if(p.y == 0) return 5 * B - p.x;
}

int main(){
	scanf("%d%d%d", &R, &C, &n);
	for(int i = 1, x1, y1, x2, y2; i <= n; i++){
		scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
		if((0 < x1 && x1 < R && 0 < y1 && y1 < C) ||
		   (0 < x2 && x2 < R && 0 < y2 && y2 < C)) continue;
		v.push_back({x1, y1, i});
		v.push_back({x2, y2, i});
	}
	sort(v.begin(), v.end(), [](Pos a, Pos b){
		return get(a) < get(b);
	});
	for(auto &i : v){
		if(!st.empty() && st.top() == i.i) st.pop();	
		else st.push(i.i);
	}
	puts(st.empty() ? "YES" : "NO");
}