#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;

struct bla
{
    int x,y;
};

bla d[200020];
int n,a,b,p;
map<int,int> mp;
int used[2020];

int cmp(bla b1,bla b2)
{
    if(b1.x==b2.x)return b1.y<b2.y;
    return b1.x<b2.x;
}

int cmp2(bla b1,bla b2)
{
    if(b1.y==b2.y)return b1.x<b2.x;
    return b1.y<b2.y;
}

int main()
{
    int i,k,pr=-1,m=1,j;
    scanf("%d%d%d%d",&a,&b,&p,&n);
    for(i=0;i<n;i++)
     scanf("%d%d",&d[i].x,&d[i].y);
    sort(d,d+n,cmp2);
    k=0;
    for(i=0;i<n;i++)
    {
        if(d[i].y!=pr)mp[d[i].y]=m++;
        if(d[i].x<p)
        {
            if(d[i].y-k>=p){printf("YES\n");return 0;}
            k=d[i].y;
        }
        pr=d[i].y;
    }
    if(b-k>=p){printf("YES\n");return 0;}
    k=b;
    for(i=n-1;i>=0;i--)
    {
        if(a-d[i].x<p)
        {
            if(k-d[i].y>=p){printf("YES\n");return 0;}
            k=d[i].y;
        }
    }
    if(k>=p){printf("YES\n");return 0;}
    k=0;
    sort(d,d+n,cmp);
    for(i=0;i<n;i++)
    {
        if(d[i].y<p)
        {
            if(d[i].x-k>=p){printf("YES\n");return 0;}
            k=d[i].x;
        }
    }
    if(a-k>=p){printf("YES\n");return 0;}
    k=a;
    for(i=n-1;i>=0;i--)
    {
        if(b-d[i].y<p)
        {
            if(k-d[i].x>=p){printf("YES\n");return 0;}
            k=d[i].x;
        }
    }
    if(k>=p){printf("YES\n");return 0;}
    m=0;
    pr=0;
    k=0;
    for(i=0;i<n;i++)
    {
        if(i==0||d[i].x!=d[i-1].x)
        {
            for(;k<i;k++)
            used[mp[d[k].y]]++;
        }
        while(d[i].x-d[m].x>=p){used[mp[d[m].y]]--;m++;}
        for(j=1;j<=2000;j++)
        {
            if(used[j]&&j-pr>=p){printf("YES\n");return 0;}
            else if(used[j])pr=j;
        }
    }
    printf("NO\n");
}
