#include <bits/stdc++.h>
using namespace std;
namespace IO
{
    const int __S=(1<<20)+5;char __buf[__S],*__H,*__T;
    inline char getc()
    {
        if(__H==__T) __T=(__H=__buf)+fread(__buf,1,__S,stdin);
        if(__H==__T) return -1;return *__H++;
    }
    template <class __I>inline void read(__I &__x)
    {
        __x=0;int __fg=1;char __c=getc();
        while(!isdigit(__c)&&__c!='-') __c=getc();
        if(__c=='-') __fg=-1,__c=getc();
        while(isdigit(__c)) __x=__x*10+__c-'0',__c=getc();
        __x*=__fg;
    }
    inline void readd(double &__x)
    {
        __x=0;double __fg=1.0;char __c=getc();
        while(!isdigit(__c)&&__c!='-') __c=getc();
        if(__c=='-') __fg=-1.0,__c=getc();
        while(isdigit(__c)) __x=__x*10.0+__c-'0',__c=getc();
        if(__c!='.'){__x=__x*__fg;return;}else while(!isdigit(__c)) __c=getc();
        double __t=1e-1;while(isdigit(__c)) __x=__x+1.0*(__c-'0')*__t,__t=__t*0.1,__c=getc();
        __x=__x*__fg;
    }
    inline void reads(char *__s,int __x)
    {
        char __c=getc();int __tot=__x-1;
        while(__c<'!'||__c>'~') __c=getc();
        while(__c>='!'&&__c<='~') __s[++__tot]=__c,__c=getc();
        __s[++__tot]='\0';
    }
    char __obuf[__S],*__oS=__obuf,*__oT=__oS+__S-1,__c,__qu[55];int __qr;
    inline void flush(){fwrite(__obuf,1,__oS-__obuf,stdout);__oS=__obuf;}
    inline void putc(char __x){*__oS++ =__x;if(__oS==__oT) flush();}
    template <class __I>inline void print(__I __x)
    {
        if(!__x) putc('0');
        if(__x<0) putc('-'),__x=-__x;
        while(__x) __qu[++__qr]=__x%10+'0',__x/=10;
        while(__qr) putc(__qu[__qr--]);
    }
    inline void prints(const char *__s,const int __x)
    {
        int __len=strlen(__s+__x);
        for(int __i=__x;__i<__len+__x;__i++) putc(__s[__i]);
    }
    inline void printd(double __x,int __d)
    {
        long long __t=(long long)floor(__x);print(__t);putc('.');__x-=(double)__t;
        while(__d--)
        {
            double __y=__x*10.0;__x*=10.0;
            int __c=(int)floor(__y);
            putc(__c+'0');__x-=floor(__y);
        }
    }
    inline void el(){putc('\n');}inline void sp(){putc(' ');}
}using namespace IO;
struct nod{int x,y,c,v;}p[400005];char o[5][10];
int n,m,K,tot,A1,A2,B1,B2,x[400005],y[400005],c[400005],vis[400005],a[400005],las[400005],s[400005],v[400005];
inline bool cmp(nod a,nod b)
{
    if(a.c!=b.c) return a.c<b.c;
    if(a.c==b.c&&a.c==1) return a.y<b.y;if(a.c==b.c&&a.c==2) return a.x<b.x;
    if(a.c==b.c&&a.c==3) return a.y>b.y;if(a.c==b.c&&a.c==4) return a.x>b.x;
}
int main()
{
    read(n);read(m);read(K);
    for(int i=1;i<=K;i++)
    {
        read(A1),read(B1),read(A2),read(B2);
        if(((A1==0||A1==n)||(B1==0||B1==m))&&((A2==0||A2==n)||(B2==0||B2==m))) 
            x[++tot]=A1,y[tot]=B1,v[tot]=i,x[++tot]=A2,y[tot]=B2,v[tot]=i;
    }
    for(int i=1;i<=tot;i++)
    {
        if(x[i]==0&&y[i]>0) c[i]=1;if(x[i]>0&&y[i]==m) c[i]=2;
        if(x[i]==n&&y[i]<m) c[i]=3;if(x[i]<n&&y[i]==0) c[i]=4;
    }
    for(int i=1;i<=tot;i++) p[i]=(nod){x[i],y[i],c[i],v[i]};
    sort(p+1,p+tot+1,cmp);for(int i=1;i<=tot;i++) a[i]=p[i].v;
    for(int i=tot;i;i--) if(!vis[a[i]]) vis[a[i]]=i,las[i]=tot+1;else las[i]=vis[a[i]];
    for(int i=1;i<=tot;i++) if(las[i]!=tot+1) s[i]++,s[las[i]]--;
    for(int i=1;i<=tot;i++) s[i]+=s[i-1];
    for(int i=1;i<=tot;i++) if(las[i]!=tot+1&&s[las[i]]-s[i-1]!=0) return puts("NO"),0;
    puts("YES");gg:;
}

Measured memory_bytes: 18176